前段时间一朋友问我能不能隐藏 Android 状态栏上不想要的图标,我就想到了以前 System UI Tuner 修改的设置值 icon_blacklist
。我之前看过的最早的帖子应该是这个。在自己的手机上测试了一下,这个设置在 Android 13 上依然有效,不过由于它属于 Secure system settings,在没有 root 的情况下需要用 adb 命令来修改。
修改方法很简单,连接上 USB 调试后进入 adb shell,输入命令修改设置值就可以了。设置值为用逗号分隔开的图标名称。部分第三方 ROM 加上了设置界面,但是里面并没有包含所有可以隐藏的图标,仍然需要手动修改设置值(例如 LineageOS)。设置值修改后可以立即生效,不需要重新启动系统。
settings put secure icon_blacklist <value>
如果只设置自己想要隐藏的图标名称,可能会让系统原先默认隐藏的图标重新显示出来(如果默认有被隐藏的图标的话)。可以先使用 get
获取设置的默认值,然后在后面加上自己想要隐藏的图标名称。这个值在 Pixel 官方 ROM 上默认为空,会使用框架里预先定义的默认值。
settings get secure icon_blacklist
要清除设置值,用 delete 就可以了。注意删除的时候可能会出现 SystemUI 崩溃的问题(我在 LineageOS 上遇到了这个问题,不过只会崩溃一次,等它自己重新启动就没事了)。
settings delete secure icon_blacklist
那么应该如何知道系统状态栏图标对应的名称呢?现在 Google 提供了 Android Code Search 工具,可以很方便的搜索 AOSP 的代码。先搜索 icon_blacklist
,可以找到以下代码:
String ICON_HIDE_LIST = "icon_blacklist";
/** Reads the default hide list from config value unless hideListStr is provided. */
static ArraySet<String> getIconHideList(Context context, String hideListStr) {
ArraySet<String> ret = new ArraySet<>();
String[] hideList = hideListStr == null
? context.getResources().getStringArray(R.array.config_statusBarIconsToExclude)
: hideListStr.split(",");
for (String slot : hideList) {
if (!TextUtils.isEmpty(slot)) {
ret.add(slot);
}
}
return ret;
}
从这段代码看到当没有设置值时,会使用 config_statusBarIconsToExclude
对应的值。搜索 config_statusBarIconsToExclude
可以找到目前在 Android 13 上的默认值(在 icon_blacklist 未设置时)有两个,旋转和耳机图标,和之前版本没有变化。
<string-array name="config_statusBarIconsToExclude" translatable="false">
<item>@*android:string/status_bar_rotate</item>
<item>@*android:string/status_bar_headset</item>
</string-array>
这里的字符串是引用的,再搜索 status_bar_rotate
可以找到它对应的是 rotate
。同时这个文件里也有其他状态栏图标的名称,目前 Android 13 的图标一共有这些:
rotate
headset
data_saver
managed_profile
ime
sync_failing
sync_active
cast
hotspot
location
bluetooth
nfc
tty
speakerphone
zen
mute
volume
wifi
cdma_eri
data_connection
phone_evdo_signal
phone_signal
battery
alarm_clock
secure
clock
mobile
vpn
ethernet
microphone
camera
airplane
no_calling
call_strength
sensors_off
screen_record
这个列表对于 Pixel 和基于 AOSP 的一些第三方 ROM 应该都是可用的。对于厂商定制的 ROM,可能还有其他的图标,要看那些图标对应的名字和设置值为空时系统预设的默认值,应该只能通过反编译系统提取的文件来查看了。
已经 2023 年了,先祝大家新年快乐。好长时间没有更新文章了(更新服务器的软件也算更新博客吧),去年也没有写 Android 预览版的体验,因为太懒了。今年如果 Android 14 的变化比较大的话,我应该会写一写吧。下半年应该要换手机了,不然就不能继续用最新版的 Android 了。希望 Google 可以给 Pixel 系列提供更长时间的系统升级,而不是只延长安全更新的期限。现在三星都提供四年系统升级了,Google 更应该延长时间,起到带头作用啊。
新年快乐!!
2023-01-06 10:51 回复新年快乐!🎉
2023-01-16 15:59 回复老哥这密码忘了两年了
2023-02-10 08:59 回复哈哈哈,就是懒,要是忘了密码可能整个网站的内容都没了
2023-02-10 09:00 回复