因为最新的 MIUI 测试版 /其它部分 UI 会始终显示 NFC 图标,所以写一下这个图标如何隐藏。
准备工作:

USB 数据线
电脑端 adb
手机打开 USB 调试,部分设备需要打开USB 调试(安全模式) 一般会在 USB 调试开关的下方

操作步骤:
adb shell settings put secure icon_blacklist nfc

nfc 可以替换成下面的内容,多个的话可以用,分割。

图标
图标描述

volume
静音 /震动图标

location
定位图标

speakerphone
麦克风使用中图标

wifi
wifi

hotspot
热点

alarm_clock
闹钟

bluetooth
蓝牙

airplane
飞行模式

headphone
耳机

cast
录屏状态

nfc
nfc

如果需要恢复,需要使用:
adb shell settings put secure icon_blacklist null
会一次性恢复所有图标

注意:如果你需要隐藏多个图标,需要使用 xxx,xxx,xxx 把你要隐藏的图标一次性写进去。因为这个命令是写入,不是添加。

MIUI 如何免 Root 隐藏 VPN 图标?

试了 vpn 貌似不行

adb shell settings put secure icon_blacklist vpn

Exception occurred while executing 'put':
java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS
at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2266)
at com.android.providers.settings.SettingsProvider.mutateSecureSetting(SettingsProvider.java:1719)
at com.android.providers.settings.SettingsProvider.insertSecureSetting(SettingsProvider.java:1670)
at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:458)
at android.content.ContentProvider.call(ContentProvider.java:2486)
at android.content.ContentProvider$Transport.call(ContentProvider.java:517)
at com.android.providers.settings.SettingsService$MyShellCommand.putForUser(SettingsService.java:382)
at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:278)
at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
at android.os.ShellCommand.exec(ShellCommand.java:38)
at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:50)
at android.os.Binder.shellCommand(Binder.java:953)
at android.os.Binder.onTransact(Binder.java:837)
at android.os.Binder.execTransactInternal(Binder.java:1187)
at android.os.Binder.execTransact(Binder.java:1146)

应该是安卓通用 adb
hd 高清通话的呢? volte ?

试了闹钟也是:java.lang.SecurityException: Permission denial: writing to settings

原厂 ROM 里厂商自定义的图标怎么知道图标名称呢,我的手机连接 VPN 后多了一把锁,不知道怎么禁用

root 了以后怎么隐藏呢

同求隐藏 VPN

刷个类原生,想隐藏啥就隐藏啥(有现成的开关,免 root ),可比国内 UI 省事多了……

我运行成功,但是 VPN 依然显示
查看是否隐藏命令:adb shell settings get secure icon_blacklist
运行命令显示 vpn 已经添加 blacklist ,但是依然显示 VPN 图标,重启手机也是

play 市场有个 SystemUI tuner 可以更简单点

所以说 VPN 的图标名应该不是 vpn
但是网上查了也没有提供所有图标名

SystemUI Tuner +1
亲测把猥皮摁图标搞死了,不过不是 miui

第三步自己看哦,需要打开下面一个安全设置。

我估计 miui 是换了个名字

我也是 miui 微信截图_20220612155734.png

你试过 SystemUI Tuner 吗?我以前 miui 时也是四处寻找隐藏猥皮摁的方法,未果,但我忘记有没有用过 SystemUI Tuner 了

现在用 vivo 系的,SystemUI Tuner 秒生效

看你的 shell 命令,应该用 SetEdit 或者 SystemUI Tuner (紫色图标那个)也能达到相同的效果。SystemUI Tuner 还有挺多其它好用的功能,可以试试。

我刚刚用了这个,VPN 选项可以勾掉,但是依然显示在顶部,即使手机重启。
我打算换个品牌试试看是不是小米自身的问题

system ui turner 作者已经明确表示 App 对 emui 和 miui 无效,我自己用的原生安卓和 one ui 就很好使,最近还加了汉化,在辣鸡咕鸽还没禁礼品卡的时候还请过他喝咖啡😏

miui12 没问题,los 也很兼容 SystemUI Tuner 。miui13 (基于安卓 12 )对这些兼容性都很差,只能 woobox

碰巧是 miui13
不知道是不是它改了名称还是直接禁用该功能

coloros 可以直接设置显示那些

volte_call,ims_volte,ims_volte2,volte,ims_indicator 你试试这几个

恢复的话应该是用 settings delete secure icon_blacklist

大概不可行,因为去掉了这部分代码。我的方法是用 Runtime Resource Overlay 替换掉对应图标。

Runtime Resource Overlay 是 App 名字吗?

不是,是 Android 的一个功能 source.android.com/devices/architecture/rros
需要 root 才能使用

感谢分享,终于能把状态栏的闹钟和蓝牙图标隐藏了。

los 有一点好是蓝牙未连接就不显示,连接才显示蓝牙和电量。可惜这个办法好像实现不了这个…配合 tasker 倒是可以…

woobox 是直接 hook 到状态栏 view 上,估计 adb 的方法不行,不知道只是 miui 还是安卓 12 都这样。miui12 用这个办法好像都可以

学习了