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

这篇具有很好参考价值的文章主要介绍了介绍一种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 这种资源文件夹,然后在对应的文件夹,放置不同的运营商名称即可。
安卓imsi,性能优化,Android,android,java,开发语言
附带一张国家代码对照表:
安卓imsi,性能优化,Android,android,java,开发语言
当然其他国家也有:
安卓imsi,性能优化,Android,android,java,开发语言
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系统会自动导航到正确的运营商名称。文章来源地址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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android11 授权应用获取IMEI号和ICCID

    在Android11上获取IMEI号等设备信息需要 android.permission.READ_PRIVILEGED_PHONE_STATE 权限,而这个权限又只授予系统级应用。项目中如果 targetSdkVersion 值小于29获取到的是null,大于28报SecurityException错误。 1.获取ICCID 2.系统对应用的权限检查 源码路径:frameworks/base/telephony/java/android/tele

    2024年02月03日
    浏览(32)
  • RK3588平台开发系列讲解(安卓篇)Android12 获取 root 权限

    沉淀、分享、成长,让自己和他人都能有所收获!😄 📢获取 Android 设备的 root 权限是指取得超级用户( root 用户)的权限,使得用户可以对系统进行更广泛的修改和操作。但需要注意,获取 root 权限可能会导致安全风险,包括系统不稳定、数据丢失或设备损坏,因此应该谨

    2024年02月03日
    浏览(50)
  • android10系统手机获取IMSI报错:The user 10116 does not meet the requirements to access device identifiers

    最近在项目调试中,获取手机的IMSI,IMEI等信息,发现在Android10以下系统的设备上正常,但是在Android10以上系统的设备上报错:The user 10116 does not meet the requirements to access device identifiers 出现该问题的原因如下: Android 10(API 级别 29)起,您的应用必须是设备,或者个人资料所

    2024年02月13日
    浏览(34)
  • android 12版本文件操作需要的权限,需要跳转设置页面,提醒用户手动设置

    安卓12版本的,API31,在对文件file操作时,除了申请 这个是在API30以上都需要的,否则就会报找不到文件的错误  跳转设置项,用户手动打开当前APP的文件操作权限

    2024年02月12日
    浏览(46)
  • 【Android 】android13 新权限获取 读写文件权限

    android13 新权限获取 参考:Android 13(API 33)读写SD卡权限的调整适配 - Mr,Han - 博客园 android在 获取文件读写权限(尤其是音视频、图片等等资源)的权限获取逻辑更换了。 必须申请如下权限: 这段逻辑可以看上面的文件拷贝类的代码:

    2024年02月04日
    浏览(46)
  • Android 获取网络权限

    在 AndroidManifest.xml 加入网络权限 在  application 中加入如下代码 将上述内容拷贝后 AndroidManifest.xml 整体效果如下效果如下 在 res 下 xml 文件夹内新建 netconfig.xml 文件     在  netconfig.xml 内粘贴如下代码 获取网络权限完成!

    2024年02月12日
    浏览(20)
  • Android动态获取权限(详细教程附代码)

    如果是android6.0以下的版本,只需要在manifest声明对应的权限即可。但是这样会大大降低系统的安全性。所以在android6.0及其以后,app获取权限需要得到用户的反馈才可以。 动态获取权限,可以分为两种情况。 情况一 ,操作到app特定的功能,需要某些权限时进行动态获取,这种

    2024年02月11日
    浏览(23)
  • Android 获取SIM卡号码权限申请

    在AndroidManifest.xml中添加如下权限 uses-permission android:name=\\\"android.permission.READ_PHONE_STATE\\\"/ 如果你只在清单文件中添加权限却没有在代码中获取权限,代码还是会报错的。 报错原因: android 6.0以上增加了动态获取权限api,需要动态获取手机的权限。弹出对话框询问用户,请求用户

    2024年02月08日
    浏览(29)
  • 自己开发一种编程语言,可以同时开发鸿蒙,Android ios的三个平台的应用

    要开发一种可以在鸿蒙操作系统、Android操作系统和iOS操作系统上运行的编程语言,需要考虑以下几个方面: 语言设计:首先需要设计一种语言,该语言应具备跨平台的特性,能够在不同操作系统上编写应用程序。这需要考虑语法、语义、类型系统等方面的设计。 编译器或解

    2024年02月04日
    浏览(36)
  • Android版本实现root权限(本办法适用于所有android平台)

    本方法适用于所有Android版本 userdebug和user版本 关闭selinux system/core 修改su.cpp,注释用户组权限检测 system/extras/su/su.cpp diff --git a/su/su.cpp b/su/su.cpp index 1a1ab6bf..af3d2a68 100644 --- a/su/su.cpp +++ b/su/su.cpp @@ -80,8 +80,8 @@ void extract_uidgids(const char* uidgids, uid_t* uid, gid_t* gid, gid_t* gids, i } int ma

    2024年02月06日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包