标签: android-app-ops

尝试在 android 11 上获取网络功能时出现安全异常

我在尝试访问以下代码时收到 SecurityException 和 RemoteException。应用程序接口

val networkCapabilities =connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)

异常获取

Fatal Exception: java.lang.SecurityException: Package android does not belong to 10319
           at android.os.Parcel.createExceptionOrNull(Parcel.java:2385)
           at android.os.Parcel.createException(Parcel.java:2369)
           at android.os.Parcel.readException(Parcel.java:2352)
           at android.os.Parcel.readException(Parcel.java:2294)
           at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:3347)
           at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1549)

Caused by android.os.RemoteException: Remote stack trace:
        at android.app.AppOpsManager.checkPackage(AppOpsManager.java:7783)
        at com.android.server.ConnectivityService.getNetworkCapabilities(ConnectivityService.java:2297)
        at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:1357)
        at android.os.Binder.execTransactInternal(Binder.java:1195)
        at android.os.Binder.execTransact(Binder.java:1159)
Run Code Online (Sandbox Code Playgroud)

我分析它,当我深入到AOSP代码,我得到的流量将会checkPackage从AppOpsManager类随附的屏幕截图,并从我们所知道的代码所示的方法,只要检查包的条件不等于MODE_ALLOWED那么只有我们将得到安全例外。但我没有。想法何时该条件会失败。

如果有人对此有任何想法,请帮助我,谢谢

在此处输入图片说明

在此处输入图片说明

android exception android-source android-app-ops android-connectivitymanager

14
推荐指数
1
解决办法
1193
查看次数

使用OS 4.3的新功能禁用权限时会发生什么?

我听说操作系统4.3具有隐藏功能,可以禁用某些权限,无需重新打包APK.当我们发布应用时,我们添加必要的权限并使应用工作.但该功能可以禁用权限.我知道一些应用程序已经这样做虽然它是一个黑客,我不需要关心.但是使用OS 4.3,用户可以轻松地做到这一点.

现在我的问题是,当禁用权限时,相应的API会抛出异常吗?(我想是的.)如果这是真的,我应该为一些操作添加try-catch,否则新手用户可能最终认为我的应用程序设计不佳.

或者,我将添加一些代码来检查权限是否有我的应用程序工作,如果不是我会显示一些粗鲁,没有礼貌的消息告诉不要这样做并退出应用程序.

(有人可能会关闭这个问题,说这不是一个真正的问题.)

permissions android android-app-ops

5
推荐指数
1
解决办法
453
查看次数

SecurityException:调用 setPrimaryClip 时不允许来自 uid xxx 的 <<other_package>> 执行 READ_CLIPBOARD

我收到了有关以下崩溃的报告

SecurityException: <<other_package>> from uid xxx not allowed to perform READ_CLIPBOARD
Run Code Online (Sandbox Code Playgroud)

当用户单击将文本复制到剪贴板的按钮时发生崩溃,如下所示。

val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("label", shareUrl)
clipboard.setPrimaryClip(clip)
Run Code Online (Sandbox Code Playgroud)

所以我的应用程序不会尝试从剪贴板读取任何内容。真的很令人困惑为什么会发生这个错误。

有谁知道这个崩溃是如何发生的以及我该如何解决这个问题?

附加信息

这种崩溃仅发生在 Android 9 和 Android 10 中,并且不容易发生(20 万月活跃用户中只有 6 个用户)

我在 Crashlytics 中只看到两个 <<other_package>>(一个是银行应用程序,另一个是音乐应用程序)。

ClipboardService.java我尝试阅读和的源代码AppOpsManager.java,发现崩溃可能来自noteOpAppOpsManager.

这是崩溃的堆栈跟踪:

Fatal Exception: java.lang.SecurityException: <<other_package>> from uid xxx not allowed to perform READ_CLIPBOARD
       at android.os.Parcel.createException(Parcel.java:2087)
       at android.os.Parcel.readException(Parcel.java:2055)
       at android.os.Parcel.readException(Parcel.java:2003)
       at android.content.IClipboard$Stub$Proxy.setPrimaryClip(IClipboard.java:293)
       at android.content.ClipboardManager.setPrimaryClip(ClipboardManager.java:106)
       at my.package.MyClass.copyToClipboard(MyClass.java:63)
       at android.view.View.performClick(View.java:7375)
       at android.view.View.performClickInternal(View.java:7336)
       at android.view.View.access$3900(View.java:822) …
Run Code Online (Sandbox Code Playgroud)

android clipboardmanager android-app-ops

5
推荐指数
1
解决办法
1744
查看次数