2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 安卓获取不到imsi_Android10.0 SDK29版本拿不到手机的IMSI解决办法

安卓获取不到imsi_Android10.0 SDK29版本拿不到手机的IMSI解决办法

时间:2019-12-20 05:18:54

相关推荐

安卓获取不到imsi_Android10.0 SDK29版本拿不到手机的IMSI解决办法

手机到了10.0获取getSubscriberId()会报错,直接提示用户没有10187权限。然后看google文档里解释如此:

在使用 Android 标识符时,请遵循以下最佳做法:

避免使用硬件标识符。在大多数用例中,您可以避免使用硬件标识符,例如 SSAID (Android ID) 和 IMEI,而不会限制所需的功能。

自 Android10(API 级别 29)起,您的应用必须是设备或个人资料所有者应用,具有特殊运营商许可,或具有READ_PRIVILEGED_PHONE_STATE特权,才能访问不可重置的设备标识符。

只针对用户分析或广告用例使用广告 ID。在使用广告 ID时,请始终遵循用户关于广告跟踪的选择。此外,请确保标识符无法关联到个人身份信息 (PII),并避免桥接广告 ID 重置。

尽一切可能针对防欺诈支付和电话以外的所有其他用例使用实例 ID或私密存储的 GUID。对于绝大多数非广告用例,使用实例 ID 或 GUID 应该足矣。

使用适合您的用例的 API 以尽量降低隐私权风险。使用DRM API保护重要内容,并使用SafetyNet API防止滥用行为。SafetyNet API 是能够确定设备真伪而不会招致隐私权风险的最简单方法。

然后只能用Android_ID来替换,传说Android_ID也是唯一的,但是MISI的460080100开头的能看懂的人知道这个是啥东西(当然我不知道)

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {

//获取Android_ID

now_IMSI = Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

} else {

now_IMSI = tm.getSubscriberId();// 手机卡唯一标识,android 10.0获取不到

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。