pro*_*m85 5 permissions android overlay android-permissions
我收到以下异常:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.action.MANAGE_OVERLAY_PERMISSION dat=package:com.my.app }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1816)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1525)
at android.app.Activity.startActivityForResult(Activity.java:4265)
Run Code Online (Sandbox Code Playgroud)
这发生在一个已经有几年历史并且运行完美的应用程序中。现在我得到了一个Android 7设备的例外,型号ZUK Z1。有任何想法吗?感觉是rom有问题。此 rom 是否提供了另一种获取叠加绘图权限的方法?
编辑 - 这是我用来获取权限的函数
public static void checkOverlayPermission(Activity activity)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(activity))
{
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + activity.getPackageName()));
activity.startActivityForResult(intent, BaseDef.OVERLAY_PERMISSION_REQ_CODE);
}
}
Run Code Online (Sandbox Code Playgroud)
试试这个。这对我有用。它可能对你有帮助
if (!Settings.canDrawOverlays(this)) {
Intent localIntent = new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION");
localIntent.setData(Uri.parse("package:" + getPackageName()));
localIntent.setFlags(268435456);
startActivity(localIntent);
}
Run Code Online (Sandbox Code Playgroud)
如果您的 rom 有问题,请尝试此操作
基本上你不能只检查所有有设置问题的ROM。上面的代码在 android N 中也可以正常工作。我自己测试过这个。
您可以做的是将代码放入 try catch 块中,当您进入 catch 块时,向用户显示一个对话框,要求他手动授予覆盖权限,而不是将他直接带到设置页面。
有一些 ROM 基本上是自定义 ROM,它们在某些系统设置方面存在问题,因此这是您可以用来解决这些情况的最佳方法。
| 归档时间: |
|
| 查看次数: |
4360 次 |
| 最近记录: |