android-MANAGE_OVERLAY_PERMISSION-找不到活动异常

我收到以下异常:

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)

这是在已经使用了几年并且可以完美运行的应用程序中发生的.现在,对于型号为ZUK Z1的android 7设备,出现了此异常.有任何想法吗?似乎是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);
    }
}

解决方法:

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

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块时,向用户显示一个对话框,要求用户手动授予覆盖权限,而不是直接将其带到设置页面.

基本上有一些rom,而自定义rom某些系统设置存在问题,因此这是解决这些情况的最佳方法.

上一篇:JavaScript 中 call()、apply()、bind() 的用法


下一篇:android-如何检测我的活动何时被遮盖?