如何默认启用屏幕叠加权限

8

如何在安装应用程序时默认启用屏幕覆盖权限。

现在我面临一些问题,当捕获图像并请求运行时权限时,某些设备不允许权限,并打开屏幕覆盖设置对话框。从用户的角度来看,他们不知道为什么会出现该对话框以及该怎么做。

当打开覆盖设置屏幕时,某些应用程序会自动启用屏幕覆盖权限。

以下是我使用的代码。

 if (!Settings.canDrawOverlays(this)) {
        Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
        startActivityForResult(myIntent, 101);
 }  

这段代码直接打开覆盖屏幕设置界面,其中列出了所有应用程序。
我的要求是显示特定权限的应用程序,或在没有用户交互的情况下启用覆盖权限。
做必要的事情...
5个回答

7

根据文档,在Intent中发送你的包名。

输入:可选地,Intent的数据URI可以指定应用程序包名称以直接调用特定于包名称的管理GUI。例如“package:com.my.app”。

因此,可以这样做:

if (!Settings.canDrawOverlays(this)) {
    int REQUEST_CODE = 101;
    Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
    myIntent.setData(Uri.parse("package:" + getPackageName()));
    startActivityForResult(myIntent, REQUEST_CODE);
}  

7
使用"package:"而不要有空格。像这样:myIntent.setData(Uri.parse("package:" + getPackageName())); - comrade

6
请在您的清单文件中添加以下代码。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

1

0

在请求权限之前,您无需启用屏幕叠加权限。显示对话框向用户解释为何需要该权限,并请求其接受该权限。如果用户选择“否”,则不显示权限对话框。否则,显示权限对话框。这有助于避免屏幕叠加权限。


0

为了在其他活动上方绘制屏幕,您必须离开当前活动以获取权限。这是无法避免的。

为了做到这一点,您需要通过ACTION_MANAGE_OVERLAY_PERMISSION意图访问设置。由于您希望拥有用户友好的应用程序,在请求此类权限时,您需要触发一些带有解释原因和接受或拒绝要求选项的对话框。在接受后,触发意图并启动活动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接