Android 管理覆盖权限-未找到活动异常

Android 管理覆盖权限-未找到活动异常,android,permissions,overlay,android-permissions,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

我遇到了以下异常:

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)
这发生在一个已经有几年历史的应用程序中,并且运行得非常完美。现在我得到了安卓7的这个例外,型号是ZUKZ1。有什么想法吗?似乎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的设置有问题。上面的代码在安卓N中也可以正常工作。我自己测试过

您可以做的是将代码放入try-catch块中,当您进入catch块时,向用户显示一个对话框,要求用户手动授予覆盖权限,而不是直接将其带到设置页面


有些ROM(基本上是自定义ROM)在某些系统设置上存在问题,因此这是解决这些问题的最佳方法。

您运行的应用程序以前使用的版本。请记住,在Android 6.0棉花糖之后,您的应用程序需要在运行时请求权限(部分权限)。您不能再请求清单上的权限。所有权限都从android 5到7。如果我不开始一项活动(比如android 6之前),我也不会得到例外。我添加了上面的代码来告诉你我做了什么。嘿@prom85你找到了这个问题的解决方案吗question@UltimateDevil我想我们永远不会知道嗨,伙计们,我也有同样的问题,但在安卓电视上。有没有办法让它在电视上工作?不知道为什么有
localIntent.setFlags(268435456)我省略了它,一切都很好。这正是设置中的内容。操作\u管理\u覆盖\u权限。否决票。手动键入操作意图的错误做法。