我想在 Android 中获取 Dual sim 的序列号。我尝试了很多,但我做不到。
我尝试了以下解决方案,但在新版本的 android 中没有任何效果。你的帮助对我很有帮助。提前致谢
方法一
TelephonyManager tm = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
@SuppressLint("MissingPermission") String simID = tm.getSimSerialNumber(); // output is null
@SuppressLint("MissingPermission") String telNumber = tm.getLine1Number(); // returns mobile number not serial number
String s = tm.getMeid(1); //returns empty
方法二
// This returns empty
public static String getSerialNumber () {
String serialNumber;
try {
Class<?> c = Class.forName ("android.os.SystemProperties");
Method get = c.getMethod ("get", String.class);
serialNumber = (String) get.invoke (c, "gsm.sn1");
if (serialNumber.equals (""))
serialNumber = (String) get.invoke (c, "ril.serialnumber");
if (serialNumber.equals (""))
serialNumber = (String) get.invoke (c, "ro.serialno");
if (serialNumber.equals (""))
serialNumber = (String) get.invoke (c, "sys.serialnumber");
if (serialNumber.equals (""))
serialNumber = Build.SERIAL;
if (serialNumber.equals (""))
serialNumber = null;
} catch (Exception e) {
e.printStackTrace ();
serialNumber = null;
}
return serialNumber;
}
方法 3 // 这也返回空
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();
}
}
我尝试了更多互联网上可用的解决方案。没有帮助