清单中的权限在Android 6中不起作用

它完全无视:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

所以我得到了exception:

引起:android.view.WindowManager $ BadTokenException:无法添加窗口android.view.ViewRootImpl$W@86fb55b – 此窗口types的权限被拒绝

它甚至没有列出:

在这里输入图像描述

我应该如何解决它? 谢谢。

编辑:

它在configuration应用程序/高级/通过其他应用程序绘制中列出。 所以我打开它,现在它工作正常,但为什么没有任何对话来询问有关权限,当我运行我的应用程序? 所有的权利都被deafultclosures了,我需要去设置和mannualy打开它?

感谢CommonsWare的博客文章 ,我得到了一些线索。

假设您的代码位于ActivityFragment ,请检查覆盖权限,并在必要时提出请求:

 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); } } 

然后,重新检查更好的UX的权限:

 @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... } } }