Android:获取4G模块卡运营商、网络类型、数据连接状态和信号格数
代码
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模块卡运营商、网络类型、数据连接状态和信号格数相关推荐
- android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法
本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...
- android 获取sim卡,Android 获取手机SIM卡运营商
直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...
- Android 获取当前设备SIM运营商
直接上代码 //获取当前SIM卡运营商名称 public static String getSimOperatorName(Context context) {TelephonyManager tm ...
- 运营商网络中的在线加密(三)
运营商网络中的"在线"加密(三) 5.4. OTN加密:运营商的应用实例 5.4.1.加密的高带宽数据中心互连 (DCI) 业务 数据中心之间的通信流的特点包括:高带宽.分组 ...
- 傅一平:运营商的大数据变现实践
3月29日,由东湖大数据发起.数据观作为合作媒体参与的大数据百人会·线上沙龙第9期活动圆满结束,浙江移动大数据中心傅一平博士就<运营商大数据变现实践>主题与大家分享了数据利用的心得与经验, ...
- Sim 卡运营商获取
Sim 卡运营商获取 1. 说明 SIM(Subscriber Identification Module):用户识别模块,该卡主要作为用户的唯一身份识别.当SIM卡状态改变时,或者新卡插入时,或弹出 ...
- iOS获取设备型号,运营商,网络信息
在 iOS开发中会经常遇到需要获取设备型号,运营商,网络信息来了解和分析用户信息及使用终端情况. 但是 iOS是不能直接获取设备型号的,需要调用C语言的API, 今天给大家带来目前所有苹果设备的型号获 ...
- 物联网操作系统再思考-Hello China操作系统的运营商网络协同机制
Hello China定位为物联网操作系统,在我们以前关于物联网操作系统的系列描述文章中,已经总结出物联网操作系统区别于其它操作系统的两大核心机制:物联网相关的特性支持和运营商网络的紧密协同.所谓物联 ...
- 阿里再爆调整组织架构;苹果秘密研究卫星传输iPhone数据,想摆脱运营商网络;联发科天玑1000:首款采用4颗A77的芯片……...
关注并标星星CSDN云计算 速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read 更快.更全了解泛云圈精彩news go ...
最新文章
- MySQL协议包说明
- 计算4位数每位数相加之和(Python)
- 牛客网【每日一题】4月14日题目精讲 Xorto
- 使用visual studio 2013读取.mat文件
- 2021年,朋友圈都在传这8个视频
- SHA-3的获胜者:keccak - 在 3GPP TS 35.231、FIPS 202 和 SP 800-185 中标准化
- mysql 异常笔记
- 2020-09-14 编译Qt的MySQL 5.7插件: qsqlmysql.dll
- android系统结构与应用编程 实验报告_学习编程或编码的最佳Android应用程序
- Mysql-多表查询
- 删除非系统盘的msdia80.dll文件以及出现的dllregisterserver调用失败错误代码0x80004005问题
- 远程时间管理软件 - 工时通
- Python之爬虫之BeautifulSoup学习
- 服务器如何查询网站域名备案号,如何查询域名备案号
- 黑马JAVA P121 时间日期:Date、SimpleDateformat、Calendar
- elementui select选中获取整个item对象以及回显
- C语言示例,三个骰子
- 菜谱更新:平菇烧豆腐。
- 星球专享 | 关于播放器的一次项目实践~~
- replace()和replaceAll()的区别