为什么 Android TV 不启动 SYSTEM_ALERT_WINDOW 设置

问题描述 投票:0回答:1

当我尝试使用以下代码授予此权限时,我的应用程序完全依赖于

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授予权限吗?

任何解释,谢谢。

java android android-permissions android-tv system-alert-window
1个回答
0
投票

Android TV 未安装主设置应用程序,而是在 Android TV 设备上提供 TvSettings 应用程序。 TvSettings 没有管理此权限的活动,因此当您请求权限时,不会找到任何活动。

© www.soinside.com 2019 - 2024. All rights reserved.