java - 无法添加窗口 - 尝试创建 float View 时权限被拒绝

标签 java android

我目前正在寻求开发一个 Android 界面调试工具,它将显示一些系统信息,覆盖在下面运行的任何应用程序之上。我在线查看了许多不同的资源,并遵循将应用程序设置为 TYPE_APPLICATION_OVERLAY 的基本过程,使用 android.permission.SYSTEM_ALERT_WINDOW 定义 list 中所需的权限,但是,当尝试运行应用程序进程时,它崩溃并出现错误 FATAL EXCEPTION ... 无法添加窗口 android.view.ViewRootImpl$W... -- 权限窗口类型 2038 被拒绝

我尝试进一步调查可能导致问题的原因,并发现从某个版本开始,Android 将要求用户通过 Settings.ACTION_MANAGE_OVERLAY_PERMISSION 显式设置应用的权限以覆盖其他应用,但是,即使在启用了对其他应用的绘制权限后,该过程仍然会导致相同的错误。

我目前的应用程序设置是检查是否已授予提款权限,如果没有,则要求用户进行设置。一旦它确认用户启用了权限,它就会调用我尝试创建覆盖 View 的服务。

我对 Android 开发还比较陌生,因此我希望得到任何想法或指导!

更新:通过将窗口的 LayoutParam 设置为使用 TYPE_PHONE 而不是 TYPE_APPLICATION_OVERLAY 来设法使其正常工作。这适用于 Android N,但值得注意的是,此方法在 Android O+ 中已被弃用

最佳答案

在您的 list 中添加此权限。

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

关于java - 无法添加窗口 - 尝试创建 float View 时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45142745/

相关文章:

java - 尝试使用 maven 从命令行运行 Java7 Hello World 项目

java - 如何在 Spring Boot 中为所有 Controller 指定前缀?

java - Hashtable 适合存储 Assets 吗?

android - 如何在 Kivy 中重置小部件

android - Wikitude浏览器如何添加图层?

android - google analytics easytracker导致java连接异常

java - 在 Itext 中添加希伯来字母注释

java - self 项目:使用GUI创建国际象棋游戏

java - 如何在android中的字符串中隐藏应用程序网址

android - 为什么我的分数计数器总是重置?