歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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;
 }

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-12/93475p2.htm

Copyright © Linux教程網 All Rights Reserved