剪贴板无法从Android 10 SDK升级的后台应用程序访问



我的应用程序中使用的复制/粘贴功能。但一旦我将我的应用程序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,然后使用logcatdumpsys命令获取剪贴板。此权限必须通过ADB授予。

正如您已经提到的,由于操作系统升级,您正面临此问题。但是,您可以通过向ADB申请特殊权限来解决此问题。

可以按以下方式进行

  1. 在手机上启用开发人员模式
  2. 在您的个人电脑上安装ADB
  3. 将手机连接到个人计算机后启用USB调试
  4. 在您的计算机上,打开提取文件所在文件夹中的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

最新更新