清单中的权限在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的博客文章 ,我得到了一些线索。
假设您的代码位于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); } }
然后,重新检查更好的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... } } }