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

它完全忽略:


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

所以我有例外:


原因:android.view.WindowManager $ BadTokenException:无法添加窗口android.view.ViewRootImpl$W@86fb55b-此窗口类型的权限被拒绝


甚至没有列出:

http://img.mukewang.com/5db29e3c0001fbcf02500305.jpg

我应该如何解决?谢谢。


编辑:


它在“配置应用程序” /“高级” /“在其他应用程序之上绘制”中列出。所以我打开它,现在它可以正常工作,但是为什么当我运行我的应用程序时,没有对话框询问许可?所有的权限都被默认关闭,我需要进入设置并手动将其打开?


临摹微笑
浏览 500回答 3
3回答

莫回无

假设您的代码位于Activity或中Fragment,请检查覆盖权限,并在必要时提出要求:public static int OVERLAY_PERMISSION_REQ_CODE = 1234;public void someMethod() {&nbsp; &nbsp; if (!Settings.canDrawOverlays(this)) {&nbsp; &nbsp; &nbsp; &nbsp; Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Uri.parse("package:" + getPackageName()));&nbsp; &nbsp; &nbsp; &nbsp; startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);&nbsp; &nbsp; }}然后,重新检查权限以获得更好的UX:@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {&nbsp; &nbsp; if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {&nbsp; &nbsp; &nbsp; &nbsp; if (!Settings.canDrawOverlays(this)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // SYSTEM_ALERT_WINDOW permission not granted...&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

白衣染霜花

正如CommonsWare在其博客文章中提到的那样,很少(或根本没有)有关SYSTEM_ALERT_WINDOW更改的文档。可以有一种更简单的方法,例如使用一个小对话框询问权限,但是目前,我只知道这种方法。

蝴蝶刀刀

但是此权限已被破坏。如果用户在设置中禁用此权限,并且某些服务(需要此权限)正在运行,将会发生什么?在这种情况下,由于没有上下文,因此无法通知服务关闭自身,所以我所能做的就是捕获异常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android