当我尝试使用以下代码授予此权限时,我的应用程序完全依赖于
SYSTEM_ALERT_WINDOW
权限来工作:
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getApplicationContext().getPackageName()));
startActivityForResult(intent, 12);
应用程序崩溃并出现以下情况:
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=android.settings.action.MANAGE_OVERLAY_PERMISSION dat=package:maa.tv.tools_app}
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1798)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
at android.app.Activity.startActivityForResult(Activity.java:3917)
at android.app.Activity.startActivityForResult(Activity.java:3877)
测试环境:
运行 Android 23 Marshmallow 的 Android TV
注意:当我将TargetSDK从34更改为16时,Android操作系统会自动授予权限,并且应用程序将按预期运行。这意味着该权限确实存在于 Android TV 操作系统中。
注意2:使用
adb shell appops set maa.tv.tools_app SYSTEM_ALERT_WINDOW allow
使应用程序按预期工作
那么,当targetSDK低于23时,Android操作系统会自动使用adb shell授予权限吗?
任何解释,谢谢。
Android TV 未安装主设置应用程序,而是在 Android TV 设备上提供 TvSettings 应用程序。 TvSettings 没有管理此权限的活动,因此当您请求权限时,不会找到任何活动。