MANAGE_OVERLAY_PERMISSION - 未找到活动异常

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)

Ult*_*vil 1

试试这个。这对我有用。它可能对你有帮助

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,它们在某些系统设置方面存在问题,因此这是您可以用来解决这些情况的最佳方法。

  • 不知道为什么你有`localIntent.setFlags(268435456);`我省略了它,一切都很好 (2认同)