【Android】获取手机上所有电话卡的运营商和信号强度

这篇具有很好参考价值的文章主要介绍了【Android】获取手机上所有电话卡的运营商和信号强度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

同一张卡的网络信号,有2G,3G,4G,5G等多种

这里主要实现4G和5G信号强度的获取,2G和3G的获取方式雷同

但由于现在已经不常用了,所以不再写多余的代码文章来源地址https://www.toymoban.com/news/detail-515804.html


	package com.android.architecture;
	
	import android.content.Context;
	import android.telephony.CellIdentityLte;
	import android.telephony.CellIdentityNr;
	import android.telephony.CellInfo;
	import android.telephony.CellInfoLte;
	import android.telephony.CellInfoNr;
	import android.telephony.CellSignalStrengthLte;
	import android.telephony.CellSignalStrengthNr;
	import android.telephony.TelephonyManager;
	
	import java.util.ArrayList;
	import java.util.List;
	
	@SuppressWarnings("all")
	public class SimInfo {
	
	    public String operatorCode;
	    public String operatorName;
	
	    public int signalLevel;
	    public String signalLevelName;
	
	    @Override
	    public String toString() {
	        return operatorName + " : " + signalLevelName;
	    }
	
	    public void setOperatorName() {
	        if (operatorCode.equals("46000"))
	            operatorName = "中国移动";
	        else if (operatorCode.equals("46002"))
	            operatorName = "中国移动";
	        else if (operatorCode.equals("46004"))
	            operatorName = "中国移动";
	        else if (operatorCode.equals("46007"))
	            operatorName = "中国移动";
	        else if (operatorCode.equals("46008"))
	            operatorName = "中国移动";
	        else if (operatorCode.equals("46003"))
	            operatorName = "中国电信";
	        else if (operatorCode.equals("46005"))
	            operatorName = "中国电信";
	        else if (operatorCode.equals("46011"))
	            operatorName = "中国电信";
	        else if (operatorCode.equals("46001"))
	            operatorName = "中国联通";
	        else if (operatorCode.equals("46006"))
	            operatorName = "中国联通";
	        else if (operatorCode.equals("46009"))
	            operatorName = "中国联通";
	        else if (operatorCode.equals("46020"))
	            operatorName = "中国铁通";
	        else
	            operatorName = "其它运营商";
	    }
	
	    public void setSignalLevelName() {
	        if (signalLevel == 4)
	            signalLevelName = "好";
	        else if (signalLevel == 3)
	            signalLevelName = "中";
	        else if (signalLevel == 2)
	            signalLevelName = "差";
	        else if (signalLevel == 1)
	            signalLevelName = "极差";
	        else
	            signalLevelName = "无信号";
	    }
	
	    //获取所有SIM卡的信号强度信息
	    public static List<SimInfo> getAllSimInfo(Context context) {
	        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
	        List<SimInfo> simInfoList = new ArrayList();
	        List<CellInfo> cellInfoList = telephonyManager.getAllCellInfo();
	        for (CellInfo cellInfo : cellInfoList) {
	            if (!cellInfo.isRegistered())
	                continue;
	            //4G
	            if (cellInfo instanceof CellInfoLte) {
	                CellInfoLte lte = (CellInfoLte) cellInfo;
	                CellIdentityLte identity = lte.getCellIdentity();
	                CellSignalStrengthLte strength = lte.getCellSignalStrength();
	                SimInfo simInfo = new SimInfo();
	                simInfo.operatorCode = identity.getMobileNetworkOperator();
	                simInfo.signalLevel = strength.getLevel();
	                simInfo.setOperatorName();
	                simInfo.setSignalLevelName();
	                simInfoList.add(simInfo);
	            }
	            //5G
	            if (cellInfo instanceof CellInfoNr) {
	                CellInfoNr nr = (CellInfoNr) cellInfo;
	                CellIdentityNr identity = (CellIdentityNr) nr.getCellIdentity();
	                CellSignalStrengthNr strength = (CellSignalStrengthNr) nr.getCellSignalStrength();
	                SimInfo simInfo = new SimInfo();
	                simInfo.operatorCode = "" + identity.getMccString() + identity.getMncString();
	                simInfo.signalLevel = strength.getLevel();
	                simInfo.setOperatorName();
	                simInfo.setSignalLevelName();
	                simInfoList.add(simInfo);
	            }
	        }
	        return simInfoList;
	    }
	}



到了这里,关于【Android】获取手机上所有电话卡的运营商和信号强度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uniapp获取手机可接收的所有的WiFi名称与信号强度

    文章目录 前言 一、代码及注释 总结 :HBuilder uniapp wifi RSSI SSID 最近做项目有一个需求,要求用HBuilder uniapp做一个app显示手机可接收的WiFi名称和对应的场强(信号强度),百度找了一圈,只找到了关于WiFi名称的一些资料,于是根据一篇文章修改了一下(附在文末),最

    2024年02月11日
    浏览(28)
  • Android之抓取短信,所有应用信息,通讯录,通话记录,手机系统相册图片

    一般我们做金融APP会遇到风控需求,需要获取用户手机短信,手机所有安装应用信息,通讯录,通话记录等功能,接下来我们看看怎么做,一篇文章解决所有! 这里我只需要这些字段,需要更多自己添加 1.kotlin 2.java 1.kotlin 2.Java 1.kotlin 2.Java 这篇文章比较长,懒得分开成几篇

    2024年02月16日
    浏览(27)
  • Android获取手机设备信息

    Android获取手机设备信息 在Android应用开发中,我们经常需要获取手机设备的信息来做一些个性化的逻辑处理。本文将介绍如何使用Android提供的API获取手机设备信息,并给出相应的源代码示例。 获取设备型号 设备型号可以帮助我们了解用户所使用的具体设备类型,从而做出一

    2024年01月25日
    浏览(29)
  • 【Android】小米手机 Root全攻略:轻松获取手机最高权限

    需求 作为一个贫穷的米粉,目前为止买的手机都是小米的,一开始就冲着它的“发烧”而去,米1、米4、米8、K50,除了米8外,都刷过机,root过。 除了米1忽然有一天罢工之后,不能使用,其他手机都依然辛苦任职中。 K50 是最近买的,先想到的就是root掉,本来以为网上资料

    2024年02月08日
    浏览(80)
  • Android动态获取手机是否是充电状态

    参考谷歌官方文档:https://developer.android.google.cn/topic/performance/power 在应用中执行某些操作 , 如软件云端备份 , 从服务器端获取最新版本号 , 从服务器端缓存最新软件安装包 , 固件版本 , 等操作 , 最好都在充电状态 , 我这边是做一个需求,电池容量校准,校准条件是需要在连接充

    2023年04月08日
    浏览(27)
  • Android 获取手机已安装的应用列表(适配)

    加上权限才能获取到所有的应用 低版本的手机 可以用else里边的方法 也可以用 Intent的action 是:Intent.ACTION_MAIN 这个不要传错。 水平有限,如有问题欢迎评论区留言指正。 如果在高版本上有问题的话建议将 targetSdkVersion设置成26试试。 关注我获取更多知识或者投稿

    2024年02月13日
    浏览(27)
  • android开发获取手机麦克风设备信息

    之前为了测试蓝牙耳机的麦克,想从蓝牙耳机的麦克录音。尝试发现三星、小米自带的录音机并不能从蓝牙录音。看了网上一篇文章,提供了一个特定的录音APP,才支持开启蓝牙录音功能。 非常令人疑惑。想到现在的手机,有不只一个麦克风,是否能开发一个可选择录音源的

    2024年04月16日
    浏览(28)
  • Android 获取手机通讯录联系人信息

    近日在项目开发过程中发现,华为手机HarmonyOS 3.0系统,设置隐私 里面可以查看各个应用访问隐私权限的次数,发现应用程序访问手机通讯录的次数异常的高,针对访问通讯录频次高的问题做了研究和优化 问题分析: 分析代码发现只要通过ContentProvider 访问通讯录一次,统计

    2024年02月12日
    浏览(28)
  • android开发:获取手机IP和UDP广播

            UDP广播在通讯双方互相不知道对方IP的情况下很有用。这种情形我们也可以用遍历网段来实现,但是比较粗暴,如果网段比较大,不是最多256台主机的C类网段的话,很难做遍历。         UDP广播是解决这种问题的标准方案。         注意,广播和多播是不同的,广

    2024年02月19日
    浏览(27)
  • Android中获取手机SIM卡的各种信息

     通过以下工具类方法可以获取到手机SIM的各种信息数据!!!

    2024年02月10日
    浏览(24)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包