SubscriptionManager mSubscriptionManager = SubscriptionManager.from(DeviceService.this);
if (ActivityCompat.checkSelfPermission(DeviceService.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return null;
}
List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
TelephonyManager telephonyManager = (TelephonyManager) DeviceService.this.getSystemService(Context.TELEPHONY_SERVICE);
String Iccid1 = "";
String Iccid2 = "";
String Imsi1 = "";
String Imsi2 = "";
if (sil != null) {
int num = 0;
for (SubscriptionInfo subInfo : sil) {
int sbuid = subInfo.getSubscriptionId();
Log.v(TAG, "SubInfo:" + subInfo + " sbuid=" + sbuid + " num=" + num);
if (num == 0) {
Iccid1 = subInfo.getIccId();
Imsi1 = getSubscriberId(sbuid);
} else {
Iccid2 = subInfo.getIccId();
Imsi2 = getSubscriberId(sbuid);
}
num++;
}
} else {
Log.v(TAG, "onSubscriptionInfoChanged: list is null");
}
public String getSubscriberId(int subId) {
TelephonyManager telephonyManager = (TelephonyManager) DeviceService.this
.getSystemService(TELEPHONY_SERVICE);// 取得相关系统服务
Class<?> telephonyManagerClass = null;
String imsi = null;
try {
telephonyManagerClass = Class.forName("android.telephony.TelephonyManager");
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.LOLLIPOP) {
Method method = telephonyManagerClass.getMethod("getSubscriberId", int.class);
imsi = (String) method.invoke(telephonyManager, subId);
} else if (android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.LOLLIPOP) {
Method method = telephonyManagerClass.getMethod("getSubscriberId", long.class);
imsi = (String) method.invoke(telephonyManager, (long) subId);
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d("Q_M", "IMSI--" + imsi);
return imsi;
}