Android获取手机本机号码的实现方法
Android获取手机本机号码的实现方法
反射TelephoneManager获取本机号码,注意一下提供的接口有的SIM卡没写是获取不到的,该接口只适配Android5.0以上版本
publicStringgetMsisdn(intslotId){
returngetLine1NumberForSubscriber(getSubIdForSlotId(slotId));
}
权限
publicclassRegisterMessage{
privatestaticContextmContext;
privatestaticTelephonyManagermTelephonyManager;
privateConnectivityManagermConnMngr;
privatestaticSubscriptionManagermSubscriptionManager;
publicRegisterMessage(Contextcontext){
mContext=context;
mTelephonyManager=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if(mTelephonyManager==null){
thrownewError("telephonymanagerisnull");
}
mConnMngr=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
mSubscriptionManager=SubscriptionManager.from(mContext);
}
publicStringgetMsisdn(intslotId){//slotId0为卡1,1为卡2
returngetLine1NumberForSubscriber(getSubIdForSlotId(slotId));
}
rivateintgetSubIdForSlotId(intslotId){
int[]subIds=getSubId(slotId);
if(subIds==null||subIds.length<1||subIds[0]<0){
return-1;
}
MLog.d("getSubIdForSlotId="+subIds[0]);
returnsubIds[0];
}
privatestaticint[]getSubId(intslotId){
MethoddeclaredMethod;
int[]subArr=null;
try{
declaredMethod=Class.forName("android.telephony.SubscriptionManager").getDeclaredMethod("getSubId",newClass[]{Integer.TYPE});
declaredMethod.setAccessible(true);
subArr=(int[])declaredMethod.invoke(mSubscriptionManager,slotId);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
declaredMethod=null;
}catch(IllegalArgumentExceptione2){
e2.printStackTrace();
declaredMethod=null;
}catch(NoSuchMethodExceptione3){
e3.printStackTrace();
declaredMethod=null;
}catch(ClassCastExceptione4){
e4.printStackTrace();
declaredMethod=null;
}catch(IllegalAccessExceptione5){
e5.printStackTrace();
declaredMethod=null;
}catch(InvocationTargetExceptione6){
e6.printStackTrace();
declaredMethod=null;
}
if(declaredMethod==null){
subArr=null;
}
MLog.d("getSubId="+subArr[0]);
returnsubArr;
}
privateStringgetLine1NumberForSubscriber(intsubId){
Methodmethod;
Stringstatus=null;
try{
method=mTelephonyManager.getClass().getMethod("getLine1NumberForSubscriber",int.class);
method.setAccessible(true);
status=String.valueOf(method.invoke(mTelephonyManager,subId));
}catch(NoSuchMethodExceptione){
e.printStackTrace();
}catch(IllegalAccessExceptione){
e.printStackTrace();
}catch(IllegalArgumentExceptione){
e.printStackTrace();
}catch(InvocationTargetExceptione){
e.printStackTrace();
}
MLog.d("getLine1NumberForSubscriber="+status);
returnstatus;
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短