我的应用程序中使用的复制/粘贴功能。但一旦我将我的应用程序SDK升级到Android 10,它就无法获得正确的数据。例如,如果我从chrome复制"Hello",打开我的应用程序并粘贴它,Hello就被粘贴了。现在,如果我去chrome而不杀死我的应用程序并复制"世界",打开我的应用并粘贴,"你好"就被粘贴了。
安卓10中有一些与隐私相关的更改:https://developer.android.com/about/versions/10/privacy/changes#clipboard-数据
我的onPrimaryClipChanged()
回调在Android 10上没有触发,我的应用程序也得到了SDK升级。
有什么解决办法吗?请给我一个建议?
只有一个解决方案:请求权限android.permission.READ_LOGS
,然后使用logcat
或dumpsys
命令获取剪贴板。此权限必须通过ADB
授予。
正如您已经提到的,由于操作系统升级,您正面临此问题。但是,您可以通过向ADB申请特殊权限来解决此问题。
可以按以下方式进行
- 在手机上启用开发人员模式
- 在您的个人电脑上安装ADB
- 将手机连接到个人计算机后启用USB调试
- 在您的计算机上,打开提取文件所在文件夹中的cmd/终端亚洲开发银行的,并依次键入以下内容-
(on windows)
adb -d shell appops set <package name> SYSTEM_ALERT_WINDOW allow
adb shell pm grant <package name> android.permission.WRITE_SECURE_SETTINGS
adb shell pm grant <package name> android.permission.READ_LOGS
adb shell am force-stop <package name>
(on mac)
./adb -d shell appops set <package name> SYSTEM_ALERT_WINDOW allow
./adb shell pm grant <package name> android.permission.WRITE_SECURE_SETTINGS
./adb shell pm grant <package name> android.permission.READ_LOGS
./adb shell am force-stop <package name>
<package name>
是在开发代码中定义的根包名称。它将类似于com.example.myapp
。