介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法

demo 链接:https://github.com/miqt/GetOperator

先贴一下需要权限,然后通过获取 imsi 根据前缀判断运营商的方法:

if (checkPermission(context, Manifest.permission.READ_PHONE_STATE)) {
                TelephonyManager mTelephonyMgr = (TelephonyManager)
                        context.getSystemService(Context.TELEPHONY_SERVICE);
                if (mTelephonyMgr != null) {
                    String imsi = mTelephonyMgr.getSimOperator();
                    if (isEmpty(imsi)) {
                        imsi = mTelephonyMgr.getSubscriberId();
                    }
                    if (!isEmpty(imsi)) {
                        if (imsi.startsWith("46000") || imsi.startsWith("46002")) {
                            return carrierName = "中国移动";
                        } else if (imsi.startsWith("46001")) {
                            return carrierName = "中国联通";
                        } else if (imsi.startsWith("46003")) {
                            return carrierName = "中国电信";
                        }
                    }
                }
            }

但随着隐私合规等限制,以上方法由于需要获取imsi,导致不推荐使用了,下面就来推荐一个不需要获取imsi 就能获取运营商的方法。

我们都知道 Android 会根据设备设置的不同,去加载不同的资源文件夹。最典型的,会根据系统的语言去加载不同语言的字符串资源。而 Android 也是可以根据 MCC 和 MNC 加载不同的资源的。而我们就可以利用这一点,通过创建 values-mcc460-mnc00 这种资源文件夹,然后在对应的文件夹,放置不同的运营商名称即可。
在这里插入图片描述
附带一张国家代码对照表:
在这里插入图片描述
当然其他国家也有:
在这里插入图片描述
https://zh.wikipedia.org/wiki/%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%A0%81

最后使用方式非常简单,只是获取下资源字符串就可以了,Android系统会自动导航到正确的运营商名称。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView view = findViewById(R.id.text);
        view.setText(getString(R.string.operator));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

痕迹丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值