代码

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. 用windows自带压缩备份mysql_Windows下配合计划任务的Mysql定时压缩备份
  2. linux 批量删除
  3. js页面倒计时7天 java_javascript实现倒计时跳转页面
  4. mysql粘贴数据_Navicat 如何复制粘贴数据
  5. 去除内存上的警告,避免程序崩掉
  6. [Network Architecture]DPN(Dual Path Network)算法详解(转)
  7. Gradle学习之构建java与web项目
  8. 三分钟看Netty(3) select poll VS epoll
  9. 用好pypi,提高开发速度
  10. KPI总结模板:What
  11. 【二叉树遍历迭代伪代码】前序遍历、中序遍历、后序遍历
  12. MLCDForest:用深度森林对长链非编码RNA进行疾病预测的多标签分类模型
  13. 【笔记】ARM裸机程序开发_part3
  14. 王道考研机试指南代码合集
  15. 微信开发上传视频到服务器,微信小程序中实现上传视频的开发代码
  16. linux0.11多任务管理程序阅读注释笔记
  17. Android debug.keystore的密码
  18. 3dMax 光标丢失,无法正常显示
  19. 使用scrapy框架爬取斗鱼图片
  20. 【生科行业报告】生科行业国际巨头们的2020年过得怎么样?(一)

热门文章

  1. STM32开发记录一: 外部中断之软中断SWI使用
  2. 原型链的理解(全面)
  3. JavaScript 原型对象和原型链理解
  4. U8+开发交流平台 - http://u8dev.yonyou.com
  5. Python基础——工作日天天向上的力量
  6. public static void main(String[] args) 的介绍
  7. 玩游戏玩久了手机发烫卡顿怎么办?LDR6020方案助力手机散热器 实现快速降温
  8. 安智汽车ADAS量产故事:明年拿下5万套订单仅是保守预期
  9. markdown常用语法--花括号(超详细)
  10. Linux查看Redis版本