为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

临摹微笑 2019-10-25 15:02:54
它完全忽略:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>所以我有例外:原因:android.view.WindowManager $ BadTokenException:无法添加窗口android.view.ViewRootImpl$W@86fb55b-此窗口类型的权限被拒绝甚至没有列出:我应该如何解决?谢谢。编辑:它在“配置应用程序” /“高级” /“在其他应用程序之上绘制”中列出。所以我打开它,现在它可以正常工作,但是为什么当我运行我的应用程序时,没有对话框询问许可?所有的权限都被默认关闭,我需要进入设置并手动将其打开?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

假设您的代码位于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...

        }

    }

}


查看完整回答
反对 回复 2019-10-25
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-10-25
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

但是此权限已被破坏。如果用户在设置中禁用此权限,并且某些服务(需要此权限)正在运行,将会发生什么?在这种情况下,由于没有上下文,因此无法通知服务关闭自身,所以我所能做的就是捕获异常。

查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 497 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信