Android 根据网络分析运营商信息
2014-12-11 18:22
281 查看
From:http://blog.csdn.net/peijiangping1989/article/details/17099625
我们想获取手机的运营商信息。通常都会去调用系统的TelephonyManager类的取数据。但是很多时候可能取不到卡的信息(例如双卡手机和一些特殊卡),这样就区别不了运营商了。但是有时候我们的需求要进行不通运营商的差异化定制。这样我们可以根据网络的判断运营商。
核心就是获取可用网络列表,比如你可用网络有cmwap cmnet这样你肯定就是移动的运营商了。当然这样的办法也有不行的时候,所以我们就2套一起来。把网络和获取设备卡的信息整个写成一个接口。至于双卡双待获取sim卡信息的问题。我马上会整理一篇博客给大家。主要是根据不同的方案商来写不同的接口。
核心代码如下
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
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是电信
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
**
* 作者: 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;
}
获取网络状态的信息
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
/**
* 作者: 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卡信息(目前单卡可行)
嗯,再写一个根据电话号码解析出运营商
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
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;
}
比较笨的方法。
我们想获取手机的运营商信息。通常都会去调用系统的TelephonyManager类的取数据。但是很多时候可能取不到卡的信息(例如双卡手机和一些特殊卡),这样就区别不了运营商了。但是有时候我们的需求要进行不通运营商的差异化定制。这样我们可以根据网络的判断运营商。
核心就是获取可用网络列表,比如你可用网络有cmwap cmnet这样你肯定就是移动的运营商了。当然这样的办法也有不行的时候,所以我们就2套一起来。把网络和获取设备卡的信息整个写成一个接口。至于双卡双待获取sim卡信息的问题。我马上会整理一篇博客给大家。主要是根据不同的方案商来写不同的接口。
核心代码如下
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
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是电信
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
**
* 作者: 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;
}
获取网络状态的信息
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
/**
* 作者: 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卡信息(目前单卡可行)
嗯,再写一个根据电话号码解析出运营商
[java] view
plaincopyprint?
![](https://code.csdn.net/assets/CODE_ico.png)
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;
}
比较笨的方法。
相关文章推荐
- 根据IP来分析其地理位置和网络运营商!
- 【google M】android 网络服务状态运行机制(语音、数据注册状态;运营商信息PLMN,SPN;radio技术;信号强度)
- Android平台 用户可以根据自己输入的地址下载网络上的图片和网页信息
- android运营商和网络类型分析
- android运营商和网络类型分析
- android stagefright 播放MP3音频 打印信息分析
- [010] 百度地图API之根据经纬度查询地址信息(Android)
- 取得电信网络和手机的相关信息之TelephonyManager与android.provider.settings.System
- [Android]simplelistadapter 与数据库绑定显示list 并且根据数据库内容产生图片信息
- 获取Android网络连接信息
- android stagefright 播放MP4视频 打印信息分析
- 网络与信息安全身份证认证技术分析
- 如何取得android手机网络信息
- Android 网络连接 打开 Url下载 信息
- Android Jamendo开源在线音乐播放器源码分析五 网络连接模块的分析
- android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息
- 企业信息与网络通信安全(6)财务分析
- 网络故障分析:第四章 4.21某运营商网络故障解决方案分析过程
- 【转】Android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息
- android 模拟器“尚未注册网络”错误信息的解决办法