在Android API 29及以上版本的真实设备中,Google对于隐私进行了更严格的限制,禁止应用程序直接访问SIM卡电话号码和IMSI码。但仍有一些方法可以获取SIM卡电话号码和IMSI码:
代码示例:
val tm = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager val imsiNumber = tm.getSimSerialNumber()
代码示例:
val sm = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager val activeSubscriptionInfoList = sm.activeSubscriptionInfoList if (!activeSubscriptionInfoList.isNullOrEmpty()) { val phoneNumber = activeSubscriptionInfoList[0].number val imsiNumber = activeSubscriptionInfoList[0].imsi }
需要注意的是,以上方法均需添加权限,并且不一定适用于所有设备和运营商。在实现这些方法时,请确保符合规定并遵守相关法律和隐私政策。