MANAGE_OVERLAY_PERMISSION - 未找到活动异常

时间:2017-05-12 06:01:48

标签: android permissions 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)

这发生在一个已经有几年历史且运行良好的应用程序中。现在我得到了一个 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);
    }
}

1 个答案:

答案 0 :(得分:3)

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

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);
            }

如果您的rom是问题,请尝试此操作

基本上,您无法检查所有设置有问题的ROM。上面的代码在android N中运行良好。我自己测试了这个。

您可以做的是将您的代码放入try catch块中,当您进入catch块show user时,会出现一个对话框,要求他手动提供叠加权限,而不是直接将其带到设置页面。

有一些roms基本上是自定义roms,它们在某些系统设置中存在问题,因此这是解决这些问题的最佳方法。