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文章来源:https://www.toymoban.com/news/detail-557254.html
最后使用方式非常简单,只是获取下资源字符串就可以了,Android系统会自动导航到正确的运营商名称。文章来源地址https://www.toymoban.com/news/detail-557254.html
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));
}
}
到了这里,关于介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!