笔者最近又遇到了个新的需求,在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