Android10 Settings系列(四)设置应用信息界面,动态控制应用是否可以在设置中卸载强制停止

2023-09-14 11:33:46

一、前言

笔者最近又遇到了个新的需求,在settings中针对特定应用,禁用应用管理的强行停止和卸载按钮。于是在这里记录分享一下,加深一下印象,方便下次遇到能够快速解决问题

二、准备工作

我们知道应用管理在Settings应用中,于是准备好定位。那么如何定位呢,这里有两个工具可以使用layout inspector 和uiautomatorviewer。至于这两个工具怎么用,可以自行百度,也可以等笔者后面专门写文章总结这两个工具的用法。在这里我们需要明白一个点。遇到有界面的但是自己不是很熟悉的模块儿,最快定位到问题可以通过工具去确认控件的id然后定位代码。

三、问题分析

通过上面工具的分析得到了,force_stop的id 是button3,这里默默吐槽一下这个id的命名,Android的源码竟然命名的这么随意。
然后在settings代码中全局搜索,找到了处理类。这里贴一下关键代码。可以看到和我们需求相关的主要是这两个方法。
updateForceStopButton和 updateUninstallButton 。这里稍微看一下逻辑,我们可以在这两个方法中增加自己的逻辑,更新button的灰显

packages\apps\Settings\src\com\android\settings\applications\appinfo\AppButtonsPreferenceController.java
    
更多推荐

Gateway核心架构

1Gateway核心架构1.1基本概念路由(Route)是gateway中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:id,路由标识符,区别于其他Route。uri,路由指向的目的地uri,即客户端请求最终被转发到的微服务。order,用于多个Route之间的排序,数值越小排序越靠前,匹配优

Java常用类之 String、StringBuffer、StringBuilder

Java常用类文章目录一、字符串相关的类1.1、String的不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.4、String的常用方法1.5、String类与其他结构之间的转换1.5.1、String与基本数据类型、包装类之间的转换1.5.2、String与char[]的转换

多线程知识点整理

一.线程的状态1.线程创建,2.线程运行,3线程阻塞,4.线程等待,5.timed_waiting6.线程执行完毕publicenumState{//线程刚创建NEW,//在JVM中正在运行的线程RUNNABLE,//线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行BLOCKED,//等待状态WAITING,

腾讯mini项目-【指标监控服务重构】2023-08-06

今日已办feature/client_traces_profile修改consumer4个阶段的spankind将profile的span作为rootspan,保持与venus的followsfrom的linkfeature/profile-otelclient-metric将metric部分使用新分支pushgo.o

芯片核数造假,华为不装了,网友直呼这一波赚翻了!

首先说一下之前以为华为是青岛新恩制作的芯片,但是在最新的一个消息中发现,麒麟芯片其实是华为子公司自主研发生产的。2个重量级消息,华为突破芯片封锁后,美国科技界惊出一身冷汗!华为麒麟9000s是中芯国际做的吗?台积电和三星有没有参与?最终是这家青岛公司扛下了所有。而华为芯片为什么可以确定,而不是之前囤积的呢?其实是因为在

Linux CentOS7 wc命令

wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。录入manwc可以查看相关信息基本语法:wc[选项]文件…说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。该命令常用选项:-l统计行数-

Vue的详细教程--入门

🥳🥳WelcomeHuihui'sCodeWorld!!🥳🥳接下来看看由辉辉所写的关于Vue的相关操作吧目录🥳🥳WelcomeHuihui'sCodeWorld!!🥳🥳一.Vue是什么二.Vue的特点及优势三.使用Vue的详细步骤1.导入2.定义边界3.创建vue实例四.Vue的基本语法①v-model

浅谈C++|文件篇

C++中的文件操作是通过使用文件流来实现的。文件流提供了对文件的输入和输出功能。下面是C++文件操作的基本步骤:1.包含头文件:首先,包含`<fstream>`头文件,它包含了进行文件操作所需的类和函数。2.进行文件读写操作:使用文件流对象的成员函数进行文件读写操作。例如,使用`getline()`函数逐行读取文本内容

小型水库雨水情测报和大坝安全监测解决方案

一、建设背景我国小型水库数量众多,大多由农村集体经济组织管理,灌溉、供水、防洪、生态效益突出,是农业生产、农民生活、农村发展和区域防洪的重要基础设施,实施乡村振兴战略和生态文明建设的重要支撑保障。由于小型水库工程存在先天不足等问题,缺陷较多。2021年10月19日,水利部正式印发《小型水库雨水情测报和大坝安全监测设施建

Linux中使用selenium截图的文字变为方框的解决方案

一、前言最近在Linux中使用selenium截图时,发现文字都变为了方框:虽然不影响selenium的使用,但有点影响调试,也不好看,后面发现是因为Linux缺少中文字体的缘故,需要安装中文字体就能解决。二、安装中文字体(以centos为例)1)前置检查先检查/usr/share目录下是否有有fonts和fontco

[2023.09.21]:源码已上传,供大家了解Rust Yew的前后端开发

这个资源是Rust的源代码压缩包,供大家了解RustYew的前后端开发。资源中的代码非常简洁易懂,虽然离商用场景还有一段距离,但是涵盖了前端的组件搭建、事件通信和反向代理,以及后端的RestfulAPI的路由、功能实现和数据库访问。此外,还包括了postgres数据库的初始化脚本和docker部署脚本,方便您快速搭建环

热文推荐