我收到以下异常:
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某些系统设置存在问题,因此这是解决这些情况的最佳方法.