我們想獲取手機的運營商信息。通常都會去調用系統的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;
}
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-12/93475p2.htm