Android 来自清单的许可不';我不能在安卓6中工作

Android 来自清单的许可不';我不能在安卓6中工作,android,android-6.0-marshmallow,Android,Android 6.0 Marshmallow,它完全忽略了: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 所以我得到了一个例外: 原因:android.view.WindowManager$BadTokenException:无法添加窗口android.view.ViewRootImpl$W@86fb55b--此窗口类型的权限被拒绝 它甚至没有列出: 我该怎么修?谢谢 编辑: 它列在配置应用程序/高级/绘制其他应用程序中

它完全忽略了:

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

所以我得到了一个例外:

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

它甚至没有列出:

我该怎么修?谢谢

编辑:

它列在配置应用程序/高级/绘制其他应用程序中。所以我打开它,现在它工作正常,但为什么在我运行我的应用程序时没有任何对话框来询问权限?所有的任务都被Deafolt关闭了,我需要去设置并手动打开它?

多亏了,我得到了一些线索

假设您的代码处于
活动
片段
中,请检查覆盖权限,并在必要时提出请求:

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

我也有这个问题。我还试图通过调用
活动#requestPermissions()
来获得SYSTEM_ALERT_窗口的权限,但这不起作用。我在这里提出了一个错误报告:顺便说一下,权限列在顶部栏的设置->应用->齿轮图标->绘制其他应用(在高级部分下)。非常非常隐蔽!可能重复的谢谢!它可以工作,但它不显示正常(小)对话框,当我请求权限时,它会显示全屏对话框,你可以在这里看到:这正常吗?嗯……我不确定。正如Commonware在其博客文章中提到的,关于SYSTEM_ALERT_窗口的更改几乎没有(或根本没有)文档。有一种更简单的方法,比如通过一个小对话框请求许可,但目前,我只知道这种方法。你的解决方案对我有效。但是android文档中提供的常规方法不起作用()是的,但是这个权限被破坏了。如果用户在设置中禁用此权限,并且某些服务(需要此权限)正在运行,会发生什么情况?在这种情况下,无法通知服务自行关闭,因为没有上下文,所以我所能做的就是捕获一个异常。如何在通过Android服务调用覆盖绘制时添加此权限?示例:ChatHead Draw