两种方式判断移动运营商(移动,联通,电信)[原创]

2023-11-02

/**
 * @author Stay
 *		判断移动运营商
 */
public class NetworkOperater extends Activity {
	private static final String TAG = "MainActivity";

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		// if (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED)
//		WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
//		NetworkInfo info1 = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//		if (info1.isConnectedOrConnecting()) {
//			wifiManager.setWifiEnabled(false);
//		}
//		Log.i(TAG,
//				"getDetailedState=" + info1.getDetailedState() +"\n" + 
//				"getReason=" + info1.getReason() +"\n" + 
//				"getSubtype=" + info1.getSubtype() +"\n" + 
//				"getSubtypeName=" + info1.getSubtypeName() +"\n" + 
//				"getExtraInfo=" + info1.getExtraInfo() +"\n" + 
//				"getTypeName=" + info1.getTypeName() +"\n" + 
//				"getType=" + info1.getType()  + "\n" 
//		);
//	通过联网方式判断
		NetworkInfo info2 = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		Log.i(TAG,
				"getDetailedState=" + info2.getDetailedState() +"\n" + 
				"getReason=" + info2.getReason() +"\n" + 
				"getSubtype=" + info2.getSubtype() +"\n" + 
				"getSubtypeName=" + info2.getSubtypeName() +"\n" + 
				"getExtraInfo=" + info2.getExtraInfo() +"\n" + 
				"getTypeName=" + info2.getTypeName() +"\n" + 
				"getType=" + info2.getType() 
		);
//		通过MNC判断
		TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);  
		/** 获取SIM卡的IMSI码 
		 * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志, 
		 * 储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成, 
		 * 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成, 
		 * 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。 
		 * 唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可 
		*/  
		String imsi = telManager.getSubscriberId();  
          "getNetworkOperatorName=" + telManager.getNetworkOperatorName()+"\n" +//直接获取移动运营商名称
		if(imsi!=null){  
		    if(imsi.startsWith("46000") || imsi.startsWith("46002") || imsi.startsWith("46007")){//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号  
		        //中国移动  
		    }else if(imsi.startsWith("46001")){  
		        //中国联通  
		    }else if(imsi.startsWith("46003")){  
		        //中国电信  
		    }  
		}  
	}
	
	/**
	 * @author Stay
	 *		网络连接方式更改时
	 */
	private class ConnectionChangeReceiver  extends BroadcastReceiver{
		@Override
		public void onReceive(Context context, Intent intent) {
			ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );   
	        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();   
	        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE );   
	        if ( activeNetInfo != null ) {   
	            Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
	        }   
	        if( mobNetInfo != null ) {   
	            Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
	        }   
		}
	}
	
/*联通3G卡  wap連接  
	03-16 16:09:14.754: INFO/MainActivity(977): getDetailedState=CONNECTED
	03-16 16:09:14.754: INFO/MainActivity(977): getReason=apnChanged
	03-16 16:09:14.754: INFO/MainActivity(977): getSubtype=8
	03-16 16:09:14.754: INFO/MainActivity(977): getSubtypeName=HSDPA
	03-16 16:09:14.754: INFO/MainActivity(977): getExtraInfo=uniwap
	03-16 16:09:14.754: INFO/MainActivity(977): getTypeName=mobile
	03-16 16:09:14.754: INFO/MainActivity(977): getType=0
*/
	
	
	/*联通3G卡   3g连接
	03-16 16:13:48.314: INFO/MainActivity(1522): getDetailedState=CONNECTED
	03-16 16:13:48.314: INFO/MainActivity(1522): getReason=apnSwitched
	03-16 16:13:48.314: INFO/MainActivity(1522): getSubtype=3
	03-16 16:13:48.314: INFO/MainActivity(1522): getSubtypeName=UMTS
	03-16 16:13:48.314: INFO/MainActivity(1522): getExtraInfo=3gnet
	03-16 16:13:48.314: INFO/MainActivity(1522): getTypeName=mobile
	03-16 16:13:48.314: INFO/MainActivity(1522): getType=0
*/
	
	/*移动     wap连接
	 03-16 16:20:39.295: INFO/MainActivity(734): getDetailedState=CONNECTED
	03-16 16:20:39.295: INFO/MainActivity(734): getReason=apnChanged
	03-16 16:20:39.295: INFO/MainActivity(734): getSubtype=2
	03-16 16:20:39.295: INFO/MainActivity(734): getSubtypeName=EDGE
	03-16 16:20:39.295: INFO/MainActivity(734): getExtraInfo=cmwap
	03-16 16:20:39.295: INFO/MainActivity(734): getTypeName=mobile
	03-16 16:20:39.295: INFO/MainActivity(734): getType=0
	 */
	
	/*移动     net连接
	03-16 16:23:34.045: INFO/MainActivity(734): getDetailedState=CONNECTED
	03-16 16:23:34.045: INFO/MainActivity(734): getReason=apnSwitched
	03-16 16:23:34.045: INFO/MainActivity(734): getSubtype=2
	03-16 16:23:34.045: INFO/MainActivity(734): getSubtypeName=EDGE
	03-16 16:23:34.045: INFO/MainActivity(734): getExtraInfo=cmnet
	03-16 16:23:34.045: INFO/MainActivity(734): getTypeName=mobile
	03-16 16:23:34.045: INFO/MainActivity(734): getType=0

	/电信    
	05-25 18:55:30.180: INFO/MainActivity(731): getDetailedState=DISCONNECTED
	05-25 18:55:30.180: INFO/MainActivity(731): getReason=dataDisabled
	05-25 18:55:30.180: INFO/MainActivity(731): getSubtype=6
	05-25 18:55:30.180: INFO/MainActivity(731): getSubtypeName=CDMA - EvDo rev. A
	05-25 18:55:30.180: INFO/MainActivity(731): getExtraInfo=#777
	05-25 18:55:30.180: INFO/MainActivity(731): getTypeName=MOBILE
	05-25 18:55:30.180: INFO/MainActivity(731): getType=0
*/
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两种方式判断移动运营商(移动,联通,电信)[原创] 的相关文章

随机推荐

  • 单片机c51 单一外中断的应用

    1 在51单片机的P1接口上有8只LED 在外部中断0输入引脚P3 2 INT0 引脚接有一只按钮开关K1 程序要求将外部中断0设置成负跳沿触发 程序启动时 P1口上的8只LED亮 按一次开关按钮K1 使引脚接地 产生一个负跳沿触发的外部中
  • python os.walk读取路径下文件名

    import os dir path C for root dirs files in os walk dir path for file in files print os path join root file if file len
  • android自定义view之地图(一)

    最近参加了一个比赛 要用到自己做一个自定义的小地图 所以在网上查找了一些关于自定义view的有关资料 也了解了自定义控件的初步知识 效果图 第一阶段我画了一个自制的网格图 点哪个网格就会哪个网格就会显示 工作环境图 代码介绍 1 我们都知道
  • Qt之QProcess(一)运行cmd命令

    Qt提供了QProcess类 QProcess可用于完毕启动外部程序 并与之交互通信 一 启动外部程序的两种方式 1 一体式 void QProcess start const QString program const QStringLi
  • python3 题解(47 定义有理数类)

    有理数类 问题 浮点数的运算很多时候都是近似的 因为计算机无法表示一个无限的小数 有理数总可以表示为整数的比值 并且有理数的四则运算结果还是一个有理数 除0除外 如果是有四则运算 则可以考虑用有理数表示 这样可以没有舍入误差 分析 记录一个
  • Markdown基础

    Markdown学习 标题 N个 空格 二级标题 三级标题 字体 Hello World 两边都加2个 就变成粗体 Hello World 两边都加1个 就变成斜体 Hello World 两边都加3个 就变粗斜体 Hello World
  • css世界读书笔记->line-height(1)

    如果 line height 的值是1 5 font size大小是14px 那么半行距的大小是 14px 4 5 14px 2 3 5px border及line height等传统css属性没有小数的概念 因此3 5px需要取整处理 1
  • 基于卷积神经网络-门控循环单元结合注意力机制(CNN-GRU-Attention)时间序列预测,单列数据输入模型。matlab代码,2020版本及以上。评价指标包括:R2、MAE、MSE、RMSE

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 tic restoredefaultpath 导入数据 f xlsread windspeed xls She
  • sql server学习笔记——批处理语句、存储过程

    目录 批处理语句 1 批处理语句简介 示例一 示例二 存储过程 一 什么是存储过程 1 存储过程的简介 2 存储过程包含的内容 3 存储过程的优点 4 存储过程的分类 系统存储过程 用户定义存储过程 5 常用的系统储存过程 1 一般常用的存
  • 专访帝国软件的创造者:仍然在路上的80后

    全球的网站数量已经超过了一亿 并且还在以惊人的速度继续增长 CMS作为一种位于Web前端 Web 服务器 和后端办公系统或流程 内容创作 编辑 之间的软件系统为互联网应用的丰富和发展起到了至关重要的作用 最近我们注意到有一款口碑很好的CMS
  • Yii2 选择布局的方式

    方案1 控制器内成员变量 public layout false 不使用布局 public layout main 设置使用的布局文件 方案2 控制器成员方法内 this gt layout false 不使用布局 this gt layo
  • EMC 电磁兼容知识简易解析

    EMC基础知识 电磁兼容性 EMC Electromagnetic Compatibility 设备在共同的电磁环境中能一起执行各自功能的共存状态 即该设备不会由于受到处于同一电磁环境中其他设备的电磁发射导致不允许的降级 也不会使同一电磁环
  • iphone或安卓配置Charles抓包

    4个步骤完成iPhone配置Charles抓包步骤 Charles官网下载地址 Download a Free Trial of Charles Charles Web Debugging Proxy 1 连接到wifi 并设置代理地址 可
  • React传递参数的多种方式

    最常见的就是父子组件之间传递参数 父组件往子组件传值 直接用this props就可以实现 在父组件中 给需要传递数据的子组件添加一个自定义属性 在子组件中通过this props就可以获取到父组件传递过去的数据 父组件 render re
  • K-means算法的参数详解

    参数名称 默认值及输入类型 参数解释 algorithm 默认 Auto 有auto full和elkan三种选择 algorithm 优化算法的选择 有auto full和elkan三种选择 full就是一般意义上的K Means算法 e
  • java.security.InvalidKeyException: Illegal key size错误

    新使用了AES的256位密钥加解密 项目上线后发现生产在加密的时候报java security InvalidKeyException Illegal key size错误 而本地和测试环境都是没问题的 产生错误原因 为了数据代码在传输过程
  • 求生之路显示服务器指令大全手机,求生之路2指令大全 求生之路2指令怎么用? (7) _地图指令_游侠网...

    地图指令 c1m1 hotel 1 死亡中心1旅馆 c1m2 streets 1 死亡中心2街道 c1m3 mall 1 死亡中心3购物中心 c1m4 atrium 1 死亡中心4中厅 c2m1 highway 1 黑色狂欢节1高速公路 c
  • 正则校验-我需要的正则表达式知识

    正则校验 我需要的正则表达式知识 正则表达式由正则表达式引擎提供支持 不同编程环境有不同的正则表达式引擎 在实际使用正则表达式的过程中会有一些差别 什么是正则表达式 正则表达式是用于描述匹配复杂字符串规则的工具 一个正则表达式对应着一个文本
  • python glob通配符方式单/多层搜索文件/文件夹

    import os import glob 可以利用通配符进行文件的搜索获取 goal dir r D demo 遍历指定文件夹下所有文件或文件夹 for file in glob glob goal dir print file 遍历指定
  • 两种方式判断移动运营商(移动,联通,电信)[原创]

    author Stay 判断移动运营商 public class NetworkOperater extends Activity private static final String TAG MainActivity Called wh