Android手机上判断网络运营商
我们想获取手机的运营商信息。通常都会去调用系统的TelephonyManager类的取数据。但是很多时候可能取不到卡的信息(例如双卡手机和 一些特殊卡),这样就区别不了运营商了。但是有时候我们的需求要进行不通运营商的差异化定制。这样我们可以根据网络的判断运营商。
核心就是获取可用网络列表,比如你可用网络有cmwap cmnet这样你肯定就是移动的运营商了。当然这样的办法也有不行的时候,所以我们就2套一起来。把网络和获取设备卡的信息整个写成一个接口。至于双卡双 待获取sim卡信息的问题。我马上会整理一篇博客给大家。主要是根据不同的方案商来写不同的接口。
核心代码如下
private void getProviders() {
NetWorkUtil nwu = new NetWorkUtil(this);
String net = nwu.getNetWork();
List<String> infos = nwu.getNetWorkList();
if (net == null || net.equals("WIFI")) {
if (infos.size() > 1) {
infos.remove("WIFI");
net = infos.get(0);
if (net.equals("3gwap") || net.equals("uniwap")
|| net.equals("3gnet") || net.equals("uninet")) {
Constants.MB_ID = 2;
} else if (net.equals("cmnet") || net.equals("cmwap")) {
Constants.MB_ID = 1;
} else if (net.equals("ctnet") || net.equals("ctwap")) {
Constants.MB_ID = 3;
}
} else {
Constants.MB_ID = PhoneUtil.getProvidersName(this);
}
} else {
if (net.equals("3gwap") || net.equals("uniwap")
|| net.equals("3gnet") || net.equals("uninet")) {
Constants.MB_ID = 2;
} else if (net.equals("cmnet") || net.equals("cmwap")) {
Constants.MB_ID = 1;
} else if (net.equals("ctnet") || net.equals("ctwap")) {
Constants.MB_ID = 3;
}
}
}
1是移动,2是联通,3是电信
**
* 作者: peijiangping<BR>
* 时间:2012-12-21下午6:22:38<BR>
* 功能:获取可用网络列表<BR>
* 返回值:void<BR>
*/
public List<String> getNetWorkList() {
ConnectivityManager cm = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infos = cm.getAllNetworkInfo();
List<String> list = new ArrayList<String>();
if (infos != null) {
for (int i = 0; i < infos.length; i++) {
NetworkInfo info = infos[i];
String name = null;
if (info.getTypeName().equals("WIFI")) {
name = info.getTypeName();
} else {
name = info.getExtraInfo();
}
if (name != null && list.contains(name) == false) {
list.add(name);
// System.out.println(name);
}
}
}
return list;
}
public String getNetWork() {
String NOWNET = null;
ConnectivityManager cm = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
if (info.getTypeName().equals("WIFI")) {
NOWNET = info.getTypeName();
} else {
NOWNET = info.getExtraInfo();// cmwap/cmnet/wifi/uniwap/uninet
}
}
return NOWNET;
}
获取网络状态的信息
/**
* 作者: peijiangping<BR>
* 时间:2012-12-17下午2:55:31<BR>
* 功能:获取运营商信息<BR>
* 返回值:int<BR>
*/
public static int getProvidersName(Context c) {
int ProvidersName = 0;
try {
TelephonyManager telephonyManager = (TelephonyManager) c
.getSystemService(Context.TELEPHONY_SERVICE);
String operator = telephonyManager.getSimOperator();
if (operator == null || operator.equals("")) {
operator = telephonyManager.getSubscriberId();
}
if (operator == null || operator.equals("")) {
ToastUtil tu = new ToastUtil(c);
tu.showDefultToast("未检测到sim卡信息!");
}
if (operator != null) {
if (operator.startsWith("46000")
|| operator.startsWith("46002")) {
ProvidersName = 1;
} else if (operator.startsWith("46001")) {
ProvidersName = 2;
} else if (operator.startsWith("46003")) {
ProvidersName = 3;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return ProvidersName;
}
获取SIM卡信息(目前单卡可行)
嗯,再写一个根据电话号码解析出运营商
public static int validateMobile(String mobile) {
if (mobile == null) {
return 0;
}
mobile = getRealPhoneNum(mobile);
if (mobile.trim().length() != 11) {
return 0;
}
if (mobile.trim().substring(0, 3).equals("134")
|| mobile.trim().substring(0, 3).equals("135")
|| mobile.trim().substring(0, 3).equals("136")
|| mobile.trim().substring(0, 3).equals("137")
|| mobile.trim().substring(0, 3).equals("138")
|| mobile.trim().substring(0, 3).equals("139")
|| mobile.trim().substring(0, 3).equals("182")
|| mobile.trim().substring(0, 3).equals("150")
|| mobile.trim().substring(0, 3).equals("151")
|| mobile.trim().substring(0, 3).equals("152")
|| mobile.trim().substring(0, 3).equals("157")
|| mobile.trim().substring(0, 3).equals("158")
|| mobile.trim().substring(0, 3).equals("159")
|| mobile.trim().substring(0, 3).equals("187")
|| mobile.trim().substring(0, 3).equals("188")) {
return 1;
} else if (mobile.trim().substring(0, 3).equals("130")
|| mobile.trim().substring(0, 3).equals("131")
|| mobile.trim().substring(0, 3).equals("132")
|| mobile.trim().substring(0, 3).equals("156")
|| mobile.trim().substring(0, 3).equals("185")
|| mobile.trim().substring(0, 3).equals("186")) {
return 2;
} else if (mobile.trim().substring(0, 3).equals("133")
|| mobile.trim().substring(0, 3).equals("153")
|| mobile.trim().substring(0, 3).equals("180")
|| mobile.trim().substring(0, 3).equals("189")) {
return 3;
}
return 0;
}
比较笨的方法。
Android手机上判断网络运营商的更多相关文章
- xe5 android 手机上使用sqlite [转]
在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank applicatio ...
- 如何在 Android 手机上实现抓包?
如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...
- Android 手机上获取手机当前上网IP地址
[转] 原文 Android 手机上获取手机当前上网IP地址 (手机网关给手机号分配的IP) 每个手机上网通过移动网关的时候,网关都会给该手 ...
- 如何在Android手机上进行自动化测试(下)
版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 通过阅读本篇教程,你将会了解到: 如何使用Poco对Android原生应用进行测试 Poco支持直接对任何Android原生应 ...
- 如何通过wifi在android手机上安装调试应用
如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpi ...
- delphi xe5 android 手机上使用sqlite
本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...
- Android手机上监听短信的两种方式
Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...
- Android 手机上安装并运行 Ubuntu 12.04
ubuntu.sh脚本的原地址变动了,导致下载不了,现在更新了网盘地址.小技巧:遇到一些下载失效的时候可以试一试p2p下载工具(如 easyMule.迅雷等)试一试,说不定有人分享过~* —————— ...
- 在Android手机上获取其它应用的包名及版本
转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...
随机推荐
- 纯干货,Spring-data-jpa详解,全方位介绍
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...
- 批量产生ssh2项目中hibernate带注解的pojo类的快捷方法
近几个月一直在忙于项目组的ios应用项目的开发,没有太多时间去研究web应用方面的问题了.刚好,昨天有网友问到如何批量产生hibernate带注解的pojo类的快捷方法,所谓批量就是指将当前数据库中所 ...
- Sping表达式语言--SpEL
Spring表达式语言---SpEL 是一个支持运行时查询和操作对象的强大的表达式语言 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean ...
- 修改linux用户密码
对于初学者来说,如何修改linux用户密码也不是件容易的事,其实非常简单,下面举例说明: 如果是以root身份登录,修改root密码.只要输入 passwd 就会出现: New password: ...
- 《零成本实现Web自动化测试--基于Selenium》 第五章 Selenium-RC
一. 简介 Selenium-RC可以适应更复杂的自动化测试需求,而不仅仅是简单的浏览器操作和线性执行.Selenium-RC能够充分利用编程语言来构建更复杂的自动化测试案例,例如读写文件.查询数据库 ...
- vi中如何去除高亮显示的单词
在vi命令行模式下输入:set nohlsearch 单词不高亮显示:set hlsearch 单词高亮显示: 如果再次打开仍然显示,则可以随便搜索一个不存在的单词,然后保存,重新打开高亮不在显示:
- Zabbix探索:网络设备监控3
这两天主要是建立Cisco和H3C的网络设备监控模板.在建立的过程中就能明显感受到两家企业的深层次的东西. Cisco设备的CPU等信息都很好找,而且有官方的SNMP Object Navigator ...
- 多线程之RunLoop
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 【转载】free查看内存
http://blog.csdn.net/hylongsuny/article/details/7742995 free 命令相对于top 提供了更简洁的查看系统内存使用情况:$ free ...
- Struts2.x jsp页面无法使用jsp:forward跳转到action
问题:使用<jsp:forward page="test"></jsp:forward>语句无法跳转到test所对应的action. 解决办法:在web.x ...