文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在Android中获取本机号码的方法有哪些

2023-05-30 20:18

关注

今天就跟大家聊聊有关在Android中获取本机号码的方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Android获取手机本机号码的实现方法

反射TelephoneManager 获取本机号码,注意一下提供的接口有的SIM卡没写是获取不到的,该接口只适配Android5.0以上版本 

 public String getMsisdn(int slotId) {    return getLine1NumberForSubscriber(getSubIdForSlotId(slotId));  }

  权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  public class RegisterMessage {   private static Context mContext;   private static TelephonyManager mTelephonyManager;   private ConnectivityManager mConnMngr;   private static SubscriptionManager mSubscriptionManager;   public RegisterMessage(Context context) {     mContext = context;     mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);     if (mTelephonyManager == null) {       throw new Error("telephony manager is null");     }     mConnMngr = (ConnectivityManager) context         .getSystemService(Context.CONNECTIVITY_SERVICE);     mSubscriptionManager = SubscriptionManager.from(mContext);   }
public String getMsisdn(int slotId) {//slotId 0为卡1 ,1为卡2   return getLine1NumberForSubscriber(getSubIdForSlotId(slotId)); }  rivate int getSubIdForSlotId(int slotId) {   int[] subIds = getSubId(slotId);   if (subIds == null || subIds.length < 1 || subIds[0] < 0) {     return -1;   }   MLog.d("getSubIdForSlotId = "+subIds[0]);   return subIds[0]; } private static int[] getSubId(int slotId) {   Method declaredMethod;   int[] subArr = null;   try {     declaredMethod = Class.forName("android.telephony.SubscriptionManager").getDeclaredMethod("getSubId", new Class[]{Integer.TYPE});     declaredMethod.setAccessible(true);     subArr = (int[]) declaredMethod.invoke(mSubscriptionManager,slotId);   } catch (ClassNotFoundException e) {     e.printStackTrace();     declaredMethod = null;   } catch (IllegalArgumentException e2) {     e2.printStackTrace();     declaredMethod = null;   } catch (NoSuchMethodException e3) {     e3.printStackTrace();     declaredMethod = null;   } catch (ClassCastException e4) {     e4.printStackTrace();     declaredMethod = null;   } catch (IllegalAccessException e5){     e5.printStackTrace();     declaredMethod = null;   }catch (InvocationTargetException e6){     e6.printStackTrace();     declaredMethod = null;   }   if(declaredMethod == null) {     subArr = null;   }   MLog.d("getSubId = "+subArr[0]);   return subArr; } private String getLine1NumberForSubscriber(int subId){   Method method;   String status = null;   try {     method = mTelephonyManager.getClass().getMethod("getLine1NumberForSubscriber", int.class);     method.setAccessible(true);     status = String.valueOf(method.invoke(mTelephonyManager, subId));   } catch (NoSuchMethodException e) {     e.printStackTrace();   } catch (IllegalAccessException e) {     e.printStackTrace();   } catch (IllegalArgumentException e) {     e.printStackTrace();   } catch (InvocationTargetException e) {     e.printStackTrace();   }   MLog.d("getLine1NumberForSubscriber = "+status);   return status; }

看完上述内容,你们对在Android中获取本机号码的方法有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯