在哪种情况下此方法返回空引用? 只能依靠SIM卡吗? 在这些情况下,不存在检索后者的识别号的替代方法吗?
感谢所有人!
答案 0 :(得分:2)
请确保您是否在Android Manifest中添加了以下权限,如果没有,请添加此语句添加再试一次。
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
注意:在应用程序标记之外添加此权限标记..
示例代码段:
.....
.....
.....
</application>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android......"/>
..........
</manifest>
所有最好的
答案 1 :(得分:1)
尝试以下代码..我将帮助你完整..
TelehponyManager manager = (TelehponyManager)getSystemService(TELEPHONY_SERVICE);
String imei = manager.getDeviceId();
String imsi = manager.getSubscriberId();
答案 2 :(得分:0)
getSimSerialNumber()需要Android 10及更高版本的特权,第三方应用无法注册此权限。
请参阅:https://developer.android.com/about/versions/10/privacy/changes#non-resettable-device-ids
一个可能的解决方案是使用Android 5.1中的TELEPHONY_SUBSCRIPTION_SERVICE,以获取sim序列号。步骤如下:
从“订阅对象”中获取SIM卡详细信息。
if(isPermissionGranted(READ_PHONE_STATE)){
String simSerialNo="";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
SubscriptionManager subsManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subsList = subsManager.getActiveSubscriptionInfoList();
if (subsList!=null) {
for (SubscriptionInfo subsInfo : subsList) {
if (subsInfo != null) {
simSerialNo = subsInfo.getIccId());
}
}
}
} else {
TelephonyManager tMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
simSerialNo = tMgr.getSimSerialNumber();
}
}
检查是否有帮助