代码

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.util.Log;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class MainActivity extends AppCompatActivity {String getProvider(@NonNull TelephonyManager mTelephonyManager) {String IMSI = "";@SuppressLint("MissingPermission")String subscriberid = mTelephonyManager.getSubscriberId();if (subscriberid != null) {IMSI = subscriberid;} else {IMSI = mTelephonyManager.getSimOperator();}String ProvidersName = "Unknown";if (IMSI != null && 0 != IMSI.compareTo("")) {if (IMSI.startsWith("46000") || IMSI.startsWith("46002") || IMSI.startsWith("46007") || IMSI.startsWith("46004")) {ProvidersName = "中国移动";} else if (IMSI.startsWith("46001") || IMSI.startsWith("46006")) {ProvidersName = "中国联通";} else if (IMSI.startsWith("46003") || IMSI.startsWith("46011")) {ProvidersName = "中国电信";} elseProvidersName = IMSI;} else {}return ProvidersName;}String getDataActivity(@NonNull TelephonyManager mTelephonyManager) {int activity = mTelephonyManager.getDataActivity();if (activity == TelephonyManager.DATA_ACTIVITY_NONE) {return "数据连接状态:活动,但无数据发送和接受\n";} else if (activity == TelephonyManager.DATA_ACTIVITY_IN) {return "数据连接状态:活动,正在接受数据\n";} else if (activity == TelephonyManager.DATA_ACTIVITY_OUT) {return "数据连接状态:活动,正在发送数据\n";} else if (activity == TelephonyManager.DATA_ACTIVITY_INOUT) {return "数据连接状态:活动,正在接受和发送数据\n";} else {return "数据连接状态:未知\n";}}String getCellularType(@NonNull TelephonyManager mTelephonyManager) {String cellularType = "";int nSubType = mTelephonyManager.getNetworkType();if (nSubType == TelephonyManager.NETWORK_TYPE_GPRS|| nSubType == TelephonyManager.NETWORK_TYPE_EDGE|| nSubType == TelephonyManager.NETWORK_TYPE_1xRTT|| nSubType == TelephonyManager.NETWORK_TYPE_CDMA|| nSubType == TelephonyManager.NETWORK_TYPE_GSM|| nSubType == TelephonyManager.NETWORK_TYPE_IDEN) {cellularType = "2G";} else if (nSubType == TelephonyManager.NETWORK_TYPE_UMTS|| nSubType == TelephonyManager.NETWORK_TYPE_TD_SCDMA|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_B|| nSubType == TelephonyManager.NETWORK_TYPE_HSDPA|| nSubType == TelephonyManager.NETWORK_TYPE_HSUPA|| nSubType == TelephonyManager.NETWORK_TYPE_HSPA|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_0|| nSubType == TelephonyManager.NETWORK_TYPE_EVDO_A|| nSubType == TelephonyManager.NETWORK_TYPE_HSPAP) {cellularType = "3G";} else if (nSubType == TelephonyManager.NETWORK_TYPE_LTE|| nSubType == TelephonyManager.NETWORK_TYPE_IWLAN) {cellularType = "4G";
//        } else if (nSubType == TelephonyManager.NETWORK_TYPE_NR) {//            cellularType= "5G";} else if (nSubType == TelephonyManager.NETWORK_TYPE_UNKNOWN) {cellularType = "0G";} elsecellularType = String.valueOf(nSubType);return cellularType;}private PhoneStateListener listener = new PhoneStateListener() {@Overridepublic void onSignalStrengthsChanged(@NonNull SignalStrength signalStrength) {Log.i("alderaan", "---------------------------\r\n");TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);String providername = getProvider(mTelephonyManager);Log.i("alderaan", "运营商为:" + providername);String cellulartype = getCellularType(mTelephonyManager);Log.i("alderaan", "网络类型为:" + cellulartype);String activity = getDataActivity(mTelephonyManager);Log.i("alderaan", activity);//通过方法反射调用,获取出和系统一样的信号格数Method method1 = null;try {method1 = signalStrength.getClass().getMethod("getLteLevel");int level = (int) method1.invoke(signalStrength);if (level != 0) {Log.i("alderaan", "当前手机的LTE信号格数:" + level);} else {// LTE信号为0时,获取GSM信号强度Method method2 = signalStrength.getClass().getMethod("getGsmLevel");int level2 = (int) method2.invoke(signalStrength);Log.i("alderaan", "当前手机的GSM信号格数:" + level2);}} catch (NoSuchMethodException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}super.onSignalStrengthsChanged(signalStrength);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Context context = this.getApplicationContext();TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);tm.listen(listener, 290);}
}

参考来源

使用TelephonyManager获取移动网络信息
Android 获取4G信号强度的方法

Android:获取4G模块卡运营商、网络类型、数据连接状态和信号格数相关推荐

  1. android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...

  2. android 获取sim卡,Android 获取手机SIM卡运营商

    直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...

  3. Android 获取当前设备SIM运营商

    直接上代码 //获取当前SIM卡运营商名称 public static String getSimOperatorName(Context context) {TelephonyManager tm ...

  4. 运营商网络中的在线加密(三)

     运营商网络中的"在线"加密(三) 5.4. OTN加密:运营商的应用实例 5.4.1.加密的高带宽数据中心互连 (DCI) 业务 数据中心之间的通信流的特点包括:高带宽.分组 ...

  5. 傅一平:运营商的大数据变现实践

    3月29日,由东湖大数据发起.数据观作为合作媒体参与的大数据百人会·线上沙龙第9期活动圆满结束,浙江移动大数据中心傅一平博士就<运营商大数据变现实践>主题与大家分享了数据利用的心得与经验, ...

  6. Sim 卡运营商获取

    Sim 卡运营商获取 1. 说明 SIM(Subscriber Identification Module):用户识别模块,该卡主要作为用户的唯一身份识别.当SIM卡状态改变时,或者新卡插入时,或弹出 ...

  7. iOS获取设备型号,运营商,网络信息

    在 iOS开发中会经常遇到需要获取设备型号,运营商,网络信息来了解和分析用户信息及使用终端情况. 但是 iOS是不能直接获取设备型号的,需要调用C语言的API, 今天给大家带来目前所有苹果设备的型号获 ...

  8. 物联网操作系统再思考-Hello China操作系统的运营商网络协同机制

    Hello China定位为物联网操作系统,在我们以前关于物联网操作系统的系列描述文章中,已经总结出物联网操作系统区别于其它操作系统的两大核心机制:物联网相关的特性支持和运营商网络的紧密协同.所谓物联 ...

  9. 阿里再爆调整组织架构;苹果秘密研究卫星传输iPhone数据,想摆脱运营商网络;联发科天玑1000:首款采用4颗A77的芯片……...

    关注并标星星CSDN云计算 速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read   更快.更全了解泛云圈精彩news   go ...

最新文章

  1. MySQL协议包说明
  2. 计算4位数每位数相加之和(Python)
  3. 牛客网【每日一题】4月14日题目精讲 Xorto
  4. 使用visual studio 2013读取.mat文件
  5. 2021年,朋友圈都在传这8个视频
  6. SHA-3的获胜者:keccak - 在 3GPP TS 35.231、FIPS 202 和 SP 800-185 中标准化
  7. mysql 异常笔记
  8. 2020-09-14 编译Qt的MySQL 5.7插件: qsqlmysql.dll
  9. android系统结构与应用编程 实验报告_学习编程或编码的最佳Android应用程序
  10. Mysql-多表查询
  11. 删除非系统盘的msdia80.dll文件以及出现的dllregisterserver调用失败错误代码0x80004005问题
  12. 远程时间管理软件 - 工时通
  13. Python之爬虫之BeautifulSoup学习
  14. 服务器如何查询网站域名备案号,如何查询域名备案号
  15. 黑马JAVA P121 时间日期:Date、SimpleDateformat、Calendar
  16. elementui select选中获取整个item对象以及回显
  17. C语言示例,三个骰子
  18. 菜谱更新:平菇烧豆腐。
  19. 星球专享 | 关于播放器的一次项目实践~~
  20. replace()和replaceAll()的区别

热门文章

  1. web渗透测试流程(学生笔记,欢迎补充改正)
  2. 60年前笑死人的笑话
  3. 深度学习1:神经网络基础前馈神经网络Feedforward Neural Network(基于Python MXNet.Gluon框架)
  4. 模糊控制-模糊是什么鬼
  5. 物联卡中心:三大运营商哪个流量便宜 联通物联卡资费
  6. 分享20个新颖的字体设计草图,带给你灵感
  7. bit比特与字节Byte的区别和联系
  8. biostar handbook|如何模拟NGS测序结果
  9. 计算机教案.doc免费,计算机模板教案.doc
  10. [HNOI2010]弹飞绵羊