来自清单的许可在 Android 6 中不起作用
Permission from manifest doesn't work in Android 6
它完全忽略了:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
所以我遇到了异常:
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@86fb55b -- permission denied for this window type
甚至没有列出:
我该如何解决?谢谢
编辑:
它列在配置应用程序/高级/在其他应用程序上绘制。所以我打开它,现在它工作正常,但为什么当我 运行 我的应用程序时没有任何对话框询问权限?所有权限均已默认关闭,我需要转到设置并手动打开它吗?
感谢CommonsWare's blog post,我得到了一些线索。
假设您的代码在 Activity
或 Fragment
中,请检查覆盖权限并在必要时提出请求:
public static int OVERLAY_PERMISSION_REQ_CODE = 1234;
public void someMethod() {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
}
然后,重新检查权限以获得更好的用户体验:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
if (!Settings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted...
}
}
}
它完全忽略了:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
所以我遇到了异常:
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@86fb55b -- permission denied for this window type
甚至没有列出:
我该如何解决?谢谢
编辑:
它列在配置应用程序/高级/在其他应用程序上绘制。所以我打开它,现在它工作正常,但为什么当我 运行 我的应用程序时没有任何对话框询问权限?所有权限均已默认关闭,我需要转到设置并手动打开它吗?
感谢CommonsWare's blog post,我得到了一些线索。
假设您的代码在 Activity
或 Fragment
中,请检查覆盖权限并在必要时提出请求:
public static int OVERLAY_PERMISSION_REQ_CODE = 1234;
public void someMethod() {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
}
然后,重新检查权限以获得更好的用户体验:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
if (!Settings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted...
}
}
}