Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 根據網絡分析運營商信息

Android 根據網絡分析運營商信息

編輯:關於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; }

獲取網絡狀態的信息

/**
	 * 作者: peijiangping
* 時間:2012-12-17下午2:55:31
* 功能:獲取運營商信息
* 返回值:int
*/ 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;
	}

比較笨的方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved