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; }