Android获取本机电话号码及运营商信息

电话管理器TelephonyManager可访问电话服务信息,包括电话号码、运营商信息、wifi状态等。一些电话信息需要相应的权限,具体可以看API文件中TelephonyManager方法的说明。

获取本机号码getLine1Number(); //返回设备的电话号码

获取运营商信息

  • 第一种方法:(需要权限)
    getSubscriberId(); //获取IMSI号(IMSI号前面3位460是国家,紧接着后面2位00、 02是中国移动,01是中国联通,03是中国电信) IMSI=MCC+MNC+MSIN

  • 第二种方法:
    getSimOperator();//获取SIM运营商代码(MCC+MNC码:MCC:移动国家码,中国是460;MNC:移动网络码,00、 02是移动,01是联通,03是电信)

另外,getSimOperatorName();可以直接获取运营商的英文名哦~

关于IMSI相关详细说明请看

实现代码如下:

 public class SIMCardInfo {

        private TelephonyManager telephonyManager;
        private String IMSI;// 国际移动用户识别码

        public SIMCardInfo(Context context) {
            telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
        }

        //获取本机号码
        public String getPhoneNumber() {
            String PhoneNumber = null;
            PhoneNumber = telephonyManager.getLine1Number();//返回设备的电话号码
            return PhoneNumber;
        }

        //获取本机运营商信息
        /**
         * 方法一:getSubscriberId(),获取IMSI号
         * 方法二:getSimOperator()获取SIM运营商代码(MCCMNC码)/getSimOperatorName()获取运营商名称(英文)
         * 【getNetworkOperator()获取网络运营商代码/getNetworkOperatorName()获取网络运营商名称(英文)】
         * 网络运营商是网络的运营商。一般SIM运营商和网络运营商是同一个,如用移动的就只能开移动的手机网络。
         从卡获取信息有所不同。
         * @return
         */
        public String getProvidersName() {
            String ProvidersName = null;
            // <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
            IMSI = telephonyManager.getSubscriberId();//使用这个需要在manifest文件里面添加 权限<uses-permission android:name="android.permission.READ_PHONE_STATE" />
            //或者:IMSI=telephonyManager.getSimOperator();
            android.util.Log.d(TAG, "IMSI== " + IMSI);
            // IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信
            try {
                if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
                    ProvidersName = "中国移动";
                } else if (IMSI.startsWith("46001")) {
                    ProvidersName = "中国联通";
                } else if (IMSI.startsWith("46003")) {
                    ProvidersName = "中国电信";
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return ProvidersName;
        }

        /**
         * 测试:getSimOperator()获取运营商代码/getSimOperatorName()获取运营商名称
         */
        public String getOperatorName(){
            String simOperator=telephonyManager.getSimOperator();
            android.util.Log.d(TAG, "SIM运营商代码: --"+simOperator);
            String simOperatorName=telephonyManager.getSimOperatorName();
            android.util.Log.d(TAG, "SIM运营商:-- "+simOperatorName);
            String networkOperator = telephonyManager.getNetworkOperator();//联网才有用
            android.util.Log.d(TAG, "网络运营商代码:-- "+networkOperator);
            String networkOperatorName = telephonyManager.getNetworkOperatorName();
            android.util.Log.d(TAG, "网络运营商:-- "+networkOperatorName);
            return simOperatorName;
        }

Log 信息在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辣椒_Carly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值