Simplicity-Team / WooBoxForMIUI

一个基于 MIUI13+(Android 12+) 适配的自定义工具 // A system extension Xposed module based on MIUI13+ (Android12+)
GNU General Public License v3.0
509 stars 43 forks source link

修改 隐藏 SIM 卡 的方法 #233

Closed HowieHChen closed 1 year ago

HowieHChen commented 1 year ago

修复隐藏 SIM 卡后状态栏下拉显示 无服务 的问题

LittleTurtle2333 commented 1 year ago
  1. subid和slotid

slotid或者phoneid是指卡槽,双卡机器的卡槽1值为0,卡槽2值为1,依次类推。

subid:SubscriptionId(Subscription Identifier)。subid是数据库telephony.db的表siminfo的主键递增项,其中telephony.db在"/data/user_de/0/com.android.providers.telephony/databases"下。

subid的值从1开始,每插入一个新卡,subId的值就会加1。

插入双卡后数据库中就会有subid值为1和2的两个数据条目,拔卡插卡交换卡槽后,数据库并不会增加新项,只有插入一张新的sim卡才会增加一条id为3的数据条目。

LittleTurtle2333 commented 1 year ago

所以这个方法还是有BUG,应该用slot去判断

HowieHChen commented 1 year ago

所以这个方法还是有BUG,应该用slot去判断

看起来此处的slot类似于图标的‘位置’而非SIM的卡槽号,StatusBarSignalPolicy$MobileIconState 类中的 copyStates 方法传入了 MobileIconState 数组,在此处修改指定index的元素的visible从而隐藏指定SIM卡图标似乎可行

LittleTurtle2333 commented 1 year ago

你先试下吧,不行的话拿getActiveSubscriptionInfoForSimSlotIndex(mSlotId)拿到subID去隐藏

HowieHChen commented 1 year ago

你先试下吧,不行的话拿getActiveSubscriptionInfoForSimSlotIndex(mSlotId)拿到subID去隐藏

试了下可以,但还是用了 getSlotIndex (int subscriptionId) 将subId转卡槽号来判断更明确一些