Android 11 ,默认授予预置应用/APK 需要的权限,解决permission denied for window type 2003 问题。
写这篇文章的原因是解决了一个APP闪退的问题,闪退的原因是插拔U盘时,注册的广播接收者接收到广播需要弹出一个Dialog询问是否需要打开U盘,这个Dialog设置的是系统级别悬浮窗,没有这个权限,报错导致闪退,下面从具体报错开始看。注:我的这个APP是文件管理器,通过Android.mk预置到系统中,为系统应用不可卸载。
一、分析报错
报错:
Unable to add window android.view.ViewRootImpl$W@5b87261 -- permission denied for window type 2003
涉及到的代码块:
if (null == usbDialog) {usbDialog = new UsbDialog(context, R.style.Dialog);usbDialog.setCancelable(true);usbDialog.setCanceledOnTouchOutside(true);usbDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);usbDialog.setCloseCallBack(new UsbDialog.CloseCallBack() {@Overridepublic void onDismiss() {closeusbDialog();}});usbDialog.show();}
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT 这里设置了系统级悬浮窗类型,即该悬浮窗是悬浮在所有应用之上的包括launcher,开发过悬浮窗的小伙伴应该会比较熟悉,悬浮分为APP内悬浮和系统级悬浮,感兴趣的同学可以看看我的另一个篇文章 悬浮球入门教学。
关于这个报错网上的大部分解决方式如下:

总结一下意思就是在用户使用的时候弹窗给用户授权,我的文件管理器不能出现弹窗授权这种情况,所以该怎么默认授予应用 android.permission.SYSTEM_ALERT_WINDOW 这个权限呢?APP层面的修改肯定不行了,需要修改framework的代码。
二、解决问题
需要修改的代码如下:
代码路径 frameworks\base\services\core\java\com\android\server\pm\permission\DefaultPermissionGrantPolicy.java
新增下面的代码: 假设你的应用包名为 com.rpg.rebuildprivate static final Set<String> WINDOW_PERMISSIONS = new ArraySet<>();static {WINDOW_PERMISSIONS.add(Manifest.permission.SYSTEM_ALERT_WINDOW);}. . . . . .. . . . . .. . . . . .grantSystemFixedPermissionsToSystemPackage(pm,getDefaultProviderAuthorityPackage("com.rpg.rebuild", userId),userId,WINDOW_PERMISSIONS); 注:需要预制成系统应用,上述代码才生效。
写在最后:如果你是一个三方APP开发者,你的APP是上架应用商店的,目前是没有办法实现不弹窗给用户授予,就获得系统级悬浮窗口权限的,除非就是让手机厂商把你的三方APP预制到系统中像上面一样授予默认权限。
相关文章:
Android 11 ,默认授予预置应用/APK 需要的权限,解决permission denied for window type 2003 问题。
写这篇文章的原因是解决了一个APP闪退的问题,闪退的原因是插拔U盘时,注册的广播接收者接收到广播需要弹出一个Dialog询问是否需要打开U盘,这个Dialog设置的是系统级别悬浮窗,没有这个权限,报错导致闪退,下面…...
RabbitMQ(消息队列)
RabbitMQ 它是消息中间件,是在消息的传输过程中保存消息的容器,实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP(二进制传输,支持多种语言)、JMS(HTTP传输,只支持J…...
LeetCode-数组/回溯-No40组合总和II
题目: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: ca…...
直接调用 Java 线程的 run() 方法会发生什么?
文章目录 前言回顾run() 方法 vs start() 方法run()方法start()方法 直接调用 run() 方法的影响直接调用 run() 方法调用 start() 方法 示例解析结论个人简介 前言 在Java中,多线程编程是一个重要的概念,尤其是在处理并发任务时。线程是Java中实现多线程…...
计算机毕业设计Thinkphp/Laravel学生考勤管理系统zyoqy
管理员登录学生考勤管理系统后,可以对首页、个人中心、公告信息管理、年级管理、专业管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程签到管理、请假申请管理、销假申请管理等功能进行相应操作,如图5-2所示。学生登录进入学生考勤…...
3浏览器安全
上一篇👉: 浏览器渲染原理 浏览器安全涉及多方面的威胁与防护,其中XSS(跨站脚本攻击)与CSRF(跨站请求伪造)是最常见的两类安全问题,而中间人攻击与网络劫持也是不容忽视的安全隐患。下面是对这…...
昇思25天学习打卡Day01
实验结果 心得体会 趁着假期,跟谁官方实战营开始系统学习MindSpore深度学习框架。昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。其中易开发表现为API友好,调试难度低;高效执行包括…...
Python-爬虫 下载天涯论坛帖子
为了爬取的高效性,实现的过程中我利用了python的threading模块,下面是threads.py模块,定义了下载解析页面的线程,下载图片的线程以及线程池 import threading import urllib2 import Queue import re thread_lock threading.RL…...
创建github个人博客
文章目录 安装Hexo安装git安装Node.js安装 Hexo git配置SSH key配置ssh 搭建个人博客新建博客生成静态网页 本文主要参考 【保姆级】利用Github搭建自己的个人博客,看完就会 安装Hexo 参考官方文档:https://hexo.io/zh-cn/docs/ Hexo 是一个快速、简洁且…...
【五子棋game】
编写一个五子棋游戏程序可以分为几个步骤:设计棋盘、定义规则、实现人机交互、判断胜负。下面是一个简化的五子棋游戏程序示例,使用Python语言编写。 首先,我们需要一个棋盘。可以使用一个二维数组来表示棋盘,其中0表示空位&#…...
从入门到精通:使用Python的Watchdog库监控文件系统的全面指南
从入门到精通:使用Python的Watchdog库监控文件系统的全面指南 引言Watchdog库概述核心组件工作原理 快速开始:设置Watchdog安装Watchdog创建一个简单的监控脚本设置和启动Observer 事件处理:如何响应文件系统的变化基本事件处理处理复杂的场景…...
Linux 进程管理指令
Linux 进程管理是系统管理的重要部分,通过各种工具和命令,你可以查看、控制、调试和管理进程。以下是一些常用的 Linux 进程管理命令和工具。 查看进程 1. ps ps 命令用于列出当前系统的进程。 查看当前用户的所有进程: ps -u $USER查看…...
Java OA系统通知公告模块
### 使用Spring Boot实现OA通知公告模块 使用Spring Boot框架实现一个支持多种形式公告发布、设置发布时间和有效期,以及公告发布后推送通知的模块。 #### 项目结构 结构组织项目: OA_Notification_Module/ ├── src/ │ ├── main/ │ │ …...
简约的服务器监控工具Ward
什么是 Ward ? Ward 是一个简单简约的服务器监控工具。 Ward 支持自适应设计系统。此外,它还支持深色主题。它仅显示主要信息,如果您想查看漂亮的仪表板而不是查看一堆数字和图表,则可以使用它。 Ward 在所有流行的操作系统上都能…...
新能源发电乙级资质所需办理标准
企业资历与信誉: 必须具有独立企业法人资格。社会信誉良好,注册资本不少于100万元人民币。 技术条件: 专业技术人员配置齐全、合理,数量需满足资质标准要求。主要技术负责人或总工程师应具有大学本科以上学历、10年以上设计经历&a…...
Elasticsearch:使用 Llamaindex 的 RAG 与 Elastic 和 Llama3
这篇文章是对之前的文章 “使用 Llama 3 开源和 Elastic 构建 RAG” 的一个补充。我们可以在本地部署 Elasticsearch,并进行展示。我们将一步一步地来进行配置并展示。你还可以参考我之前的另外一篇文章 “Elasticsearch:使用在本地计算机上运行的 LLM 以…...
AcWing算法基础课笔记——高斯消元
高斯消元 用来求解方程组 a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 21 x 1 a 22 x 2 ⋯ a 2 n x n b 2 … a n 1 x 1 a n 2 x 2 ⋯ a n n x n b n a_{11} x_1 a_{12} x_2 \dots a_{1n} x_n b_1\\ a_{21} x_1 a_{22} x_2 \dots a_{2n} x_n b_2\\ \dots \\ a…...
【JavaScript脚本宇宙】图形魔术:探索领先的图像处理库及其独特功能
深入了解HTML5视频:最受欢迎的库及其功能 前言 图像处理是现代数字媒体开发中不可或缺的一部分,从调整图像大小到创建复杂的图形场景。有许多库可用,每个库都有其特定的优点和适用场景。在本文中,我们将探讨六种流行的图像处理库…...
Nemotron-4
Nemotron-4是英伟达(NVIDIA)发布的一系列高级人工智能模型,特别着重于大尺度语言模型(LLMs)的发展。这些模型在不同的参数量级上展现出了卓越的性能和效率,其中特别提到了150亿参数的Nemotron-4 15B和3400亿…...
【神经网络】神经元的基本结构和训练过程
🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 神经元的基本结构和训练过程 …...
Qwen3.5-2B图文理解实战:上传建筑平面图,自动标注房间功能与面积
Qwen3.5-2B图文理解实战:上传建筑平面图,自动标注房间功能与面积 1. 引言:当AI遇见建筑设计 想象一下这样的场景:你刚拿到一张复杂的建筑平面图,需要快速标注每个房间的功能和面积。传统方法可能需要花费数小时手动测…...
从一次系统升级说起:聊聊Android PMS如何管理/system/app下的预装应用
Android PMS深度解析:系统预装应用的管理艺术 1. 系统预装应用的特殊地位 在Android生态系统中,预装应用占据着独特的位置。这些位于/system/app目录下的应用与普通用户应用有着本质区别: 系统级权限:预装应用通常拥有更高的系统权…...
配网接地故障排查效率提升3倍:力兴电子LX6180交流试送仪
作为常年跑野外的配网试验人员,相信大家都遇过10~66kV小电流接地系统单相接地故障的排查难题:传统分段拉闸、登杆巡检的方法,短则两三小时、长则大半天才能锁定故障点,遇上瓷瓶开裂、污潮湿引起的高阻隐性故障,更是容易…...
Qwen3.5-9B Java面试宝典生成器:动态定制八股文与场景题
Qwen3.5-9B Java面试宝典生成器:动态定制八股文与场景题 1. 为什么需要智能面试助手 Java开发者求职路上,最头疼的莫过于海量面试题的整理和记忆。传统方式要么依赖网上零散的八股文合集,要么自己手动整理知识点,效率低下且难以…...
你的pip更新报错,可能和Python 3.4这个“老古董”有关 | 版本兼容性排查指南
当pip更新报错时:Python版本兼容性深度排查指南 在Linux服务器上执行pip install --upgrade pip时,屏幕上突然跳出一串红色错误日志——这可能是每位Python开发者都经历过的噩梦。更令人抓狂的是,明明按照官方文档操作,却依然卡在…...
HC-SR501人体红外传感器:从参数解析到树莓派实战应用
1. HC-SR501人体红外传感器核心参数解析 第一次接触HC-SR501时,我被它简单的三针脚设计迷惑了——这么小的模块真能检测人体移动?实测后发现这简直是智能家居项目的"火眼金睛"。让我们拆解它的关键参数,你会发现每个调节旋钮背后都…...
BilibiliDown:让B站视频下载变得简单高效
BilibiliDown:让B站视频下载变得简单高效 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDo…...
ReadCat:开源无广告小说阅读器,为深度阅读者打造纯净体验
ReadCat:开源无广告小说阅读器,为深度阅读者打造纯净体验 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在信息爆炸的时代,找到一款无广告、界面…...
炉石传说HsMod插件终极指南:55项免费功能解锁全新游戏体验
炉石传说HsMod插件终极指南:55项免费功能解锁全新游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否厌倦了炉石传说中冗长的动画等待?是否想要更流畅的游戏体…...
新手入门指南:在快马平台用AI生成代码理解云桌面基础概念
今天想和大家分享一个特别适合新手理解云桌面基础概念的实践方法。作为一个刚接触云计算的小白,我最初对"一台主机创建多个云桌面"这个概念也是一头雾水,直到在InsCode(快马)平台上尝试用AI生成代码来模拟这个过程,才真正搞明白其中…...
