默认情况下如何启用屏幕覆盖权限

Raj*_*h J 5 android android-permissions

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

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

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

下面我使用代码.

 if (!Settings.canDrawOverlays(this)) {
        Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
        startActivityForResult(myIntent, 101);
 }  
Run Code Online (Sandbox Code Playgroud)

此代码直接打开叠加设置屏幕.他们显示所有申请表.

我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互.

需要......

EKN*_*EKN 6

在清单中添加以下代码

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Run Code Online (Sandbox Code Playgroud)


Moh*_*hie 5

文档中所述,将您的包名称发送到 Intent

Input:可选地,Intent 的数据 URI 可以指定应用程序包名称以直接调用特定于包名称的管理 GUI。例如“包: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);
}  
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用没有空格字符的 `"package:"`。像这样:`myIntent.setData(Uri.parse("package:" + getPackageName()));` (7认同)