设为首页 加入收藏

TOP

Android手机上判断网络运营商
2014-11-24 02:01:51 来源: 作者: 【 】 浏览:1
Tags:Android 机上 判断 网络 运营商

我们想获取手机的运营商信息。通常都会去调用系统的TelephonyManager类的取数据。但是很多时候可能取不到卡的信息(例如双卡手机和一些特殊卡),这样就区别不了运营商了。但是有时候我们的需求要进行不通运营商的差异化定制。这样我们可以根据网络的判断运营商。


核心就是获取可用网络列表,比如你可用网络有cmwap cmnet这样你肯定就是移动的运营商了。当然这样的办法也有不行的时候,所以我们就2套一起来。把网络和获取设备卡的信息整个写成一个接口。至于双卡双待获取sim卡信息的问题。我马上会整理一篇博客给大家。主要是根据不同的方案商来写不同的接口。


核心代码如下


private void getProviders() {
NetWorkUtil nwu = new NetWorkUtil(this);
String net = nwu.getNetWork();
List 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

* 时间:2012-12-21下午6:22:38

* 功能:获取可用网络列表

* 返回值:void

*/
public List getNetWorkList() {
ConnectivityManager cm = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infos = cm.getAllNetworkInfo();
List list = new ArrayList();
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;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用栈实现递归函数的一个例子(C语.. 下一篇Android framework层实现实现wifi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: