首页 > 解决方案 > 即时应用上的叠加权限

问题描述

我正在尝试使用从即时应用程序触发的“浮动小部件”,为此我需要获得ACTION_MANAGE_OVERLAY_PERMISSION我应该能够以这种方式获得的内容:

intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
               Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, APP_PERMISSION_REQUEST);

不幸的是,当我尝试启动此 Intent 时出现此运行时错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.instantapps.samples.hellofeature/com.instantappsamples.feature.hello.HelloActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.action.MANAGE_OVERLAY_PERMISSION dat=package:com.google.android.instantapps.samples.hellofeature }

是否有可能无法从即时应用程序中获得此权利?(安装的应用程序运行良好)

标签: javaandroidandroid-intentoverlayandroid-instant-apps

解决方案


Instant Apps 对 PackageManager 的看法有限。我没有一个很好的参考来确定设置 - 或者特别是这个活动 - 是不可见的。但期望应该是大多数包中的大多数活动是不可见的。

即使您能够访问此活动(或者,如果您只是作为用户访问,通过在“设置”应用中导航到该活动),您的免安装应用也不会被允许获得此权限。出于技术原因(因为 PackageManager 通常不知道即时应用程序,至少在 O 之前的版本中)和政策。具体来说,覆盖意味着某种程度的后台操作,这在FAQ中是不允许的。(另请注意,该页面的允许权限列表中未列出覆盖。)


推荐阅读