android流量卡信息,Android 双卡获取当前使用流量在线卡的信息

最近接触了一个项目,需要获取在线流量卡的信息,下面的方式,可以获取大部分手机的正确手机卡信息。

一  获取获取IMEI

public static String getDeviced(int soltId,Context context) {

return (String) getPhoneInfo(soltId,"getDeviceId", context);

}

获取 IMSI

public static String getSubscriberId(intsubId, Context context) {

String imsi= (String) getPhoneInfo(subId, "getSubscriberId", context);returnimsi;

}

获取 iccid

public static String getSimSerialNumber(intsubId, Context context) {

String imsi= (String) getPhoneInfo(subId, "getSimSerialNumber", context);returnimsi;

}

subId 为卡槽 id

二、双卡的时候获取哪个卡是使用流量的卡

@SuppressLint("MissingPermission")public staticInteger getDefaultDataSubId(Context context)

{

Integer id= -1;try{

SubscriptionManager sm= null;if (android.os.Build.VERSION.SDK_INT >=android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {

sm=SubscriptionManager.from(context.getApplicationContext());

Method getSubId= sm.getClass().getMethod("getDefaultDataSubId");if(getSubId != null)

{

id= (int) getSubId.invoke(sm);

}

}

}catch(NoSuchMethodException e) {try{

SubscriptionManager sm= null;if (android.os.Build.VERSION.SDK_INT >=android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {

sm=SubscriptionManager.from(context.getApplicationContext());

Method getSubId= sm.getClass().getMethod("getDefaultDataSubscrptionId");if(getSubId != null)

{

id= (int) getSubId.invoke(sm);

}

}

}catch(NoSuchMethodException e1) {// try{

SubscriptionManager sm= null;if (android.os.Build.VERSION.SDK_INT >=android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {

sm=SubscriptionManager.from(context.getApplicationContext());

Method getSubId= sm.getClass().getMethod("getDefaultDataPhoneId");//Method getSubId = Class.forName("android.telephony.SubscriptionManager").getDeclaredMethod("getSubId", new Class[]{Integer.TYPE});

if(getSubId != null)

{

id= (int) getSubId.invoke(sm);

Log.v("",(int) getSubId.invoke(sm) + "");

}

}

}catch(NoSuchMethodException e2) {

e.printStackTrace();

}catch(IllegalAccessException e2) {

e.printStackTrace();

}catch(InvocationTargetException e2) {

e.printStackTrace();

}

}catch(IllegalAccessException e1) {

e.printStackTrace();

}catch(InvocationTargetException e1) {

e.printStackTrace();

}

}catch(IllegalAccessException e) {

e.printStackTrace();

}catch(InvocationTargetException e) {

e.printStackTrace();

}returnid;

}

使用 getDefaultDataSubId  可以获取大部分手机哪个是在线的数据的卡 ,getDefaultDataSubscrptionId 是荣耀系列的手机能获取到,但小米、红米.vivo 等手机的获取不到。

上面两个可以获取大部分的,三星的好像不行,三星的把副卡的数据流量打开时,会自动关闭主卡。三星的使用 这个getDefaultDataPhoneId  , 这个可以获取到三星的哪个手机卡在线吗,但是当使用上面的获取SIMI 的方法时,两个卡,返回的都是主卡的值。

对三星的手机做了一下特殊处理:

if ( Utils.getSubscriberId(0,mContext).equals( Utils.getSubscriberId(1,mContext))) {if (id == 1) {

imsi=SystemUtil.getPhoneIMSI(mContext);

imei=SystemUtil.getIMEI(mContext);

iccid=SystemUtil.getPhoneICCID(mContext);

}else{

imsi=Utils.getSubscriberId(id,mContext);

imei=Utils.getDeviced(id,mContext);

iccid=Utils.getSimSerialNumber(id,mContext);

}

}else{

imsi=Utils.getSubscriberId(id,mContext);

imei=Utils.getDeviced(id,mContext);

iccid=Utils.getSimSerialNumber(id,mContext);

}

当传 0、 1 时获取到的SIMI 信息一样时

获取副卡信息 使用 下面的方法

@SuppressLint("MissingPermission")public staticString getPhoneIMSI(Context context) {

TelephonyManager mTelephonyMgr=(TelephonyManager) context

.getSystemService(Context.TELEPHONY_SERVICE);

String str= "";try{

str=mTelephonyMgr.getSubscriberId();

}catch(Exception e) {

str= "";

}returnstr;

}

@SuppressLint("MissingPermission")public staticString getIMEI(Context ctx) {

TelephonyManager tm=(TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);if (tm != null) {try{returntm.getDeviceId();

}catch(Exception e) {return "";

}

}return null;

}

@SuppressLint("MissingPermission")public staticString getPhoneICCID(Context context) {

TelephonyManager mTelephonyMgr=(TelephonyManager) context

.getSystemService(Context.TELEPHONY_SERVICE);try{returnmTelephonyMgr.getSimSerialNumber();

}catch(Exception e) {return "";

}

}

获取主卡信息 ,还可以使用  一 标题里面的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值