標籤:ever gprs mail html find soft dma serial access
TelephonyManager類主要提供了一系列擷取手機與通訊相關的狀態和資訊的get方法,包含手機使用者的資訊、手機SIM的狀態、電信網路的狀態等。
TelephonyManager類的對象的擷取:
TelephonyManager tm=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
在開發的時候不要忘記了在設定檔裡為其加入相應的許可權哦
<!--同意讀取電話狀態SIM的許可權--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 這個許可權用於進行網路定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
以下簡單列出TelephonyManager類的一些方法
package com.xiaolijuan.getphoneinfo;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.telephony.NeighboringCellInfo;import android.telephony.TelephonyManager;import android.widget.TextView;import java.util.List;public class MainActivity extends Activity { private TelephonyManager tm = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** * 擷取當前裝置的位置 */ tm.getCellLocation().toString(); /** * 擷取資料連線狀態 * * DATA_CONNECTED 資料連線狀態:已串連 * DATA_CONNECTING 資料連線狀態:正在串連 * DATA_DISCONNECTED 資料連線狀態:斷開 * DATA_SUSPENDED 資料連線狀態:暫停 */ tm.getDataState(); /** * 返回唯一的裝置ID * 假設是GSM網路。返回IMEI;假設是CDMA網路。返回MEID;假設裝置ID是停用返回null */ tm.getDeviceId(); /** * 返回裝置的軟體版本號碼號 * 比如:GSM手機的IMEI/SV碼。假設軟體版本號碼是返回null。假設不可用返回null */ tm.getDeviceSoftwareVersion(); /** * 返回手機號碼 * 對於GSM網路來說即MSISDN,假設不可用返回null */ tm.getLine1Number(); /** * 返回當前裝置附近裝置的資訊 */ List<NeighboringCellInfo> infos = tm.getNeighboringCellInfo(); for (NeighboringCellInfo info : infos) { //擷取鄰居小區號 int cid = info.getCid(); //擷取鄰居小區LAC,LAC: 位置欄碼。為了確定移動台的位置,每一個GSM/PLMN的覆蓋區都被劃分成很多位置區,LAC則用於標識不同的位置區。 info.getLac(); info.getNetworkType(); info.getPsc(); //擷取鄰居小區訊號強度 info.getRssi(); } /** * 返回ISO標準的國家碼,即國際長途區號 */ tm.getNetworkCountryIso(); /** * 返回MCC+MNC代碼 (SIM卡電訊廠商國家代碼和電訊廠商網路代碼)(IMSI) */ tm.getNetworkOperator(); /** * 返回移動網路電訊廠商的名字(SPN) */ tm.getNetworkOperatorName(); /** * 擷取網路類型 * * NETWORK_TYPE_CDMA 網路類型為CDMA * NETWORK_TYPE_EDGE 網路類型為EDGE * NETWORK_TYPE_EVDO_0 網路類型為EVDO0 * NETWORK_TYPE_EVDO_A 網路類型為EVDOA * NETWORK_TYPE_GPRS 網路類型為GPRS * NETWORK_TYPE_HSDPA 網路類型為HSDPA * NETWORK_TYPE_HSPA 網路類型為HSPA * NETWORK_TYPE_HSUPA 網路類型為HSUPA * NETWORK_TYPE_UMTS 網路類型為UMTS * * 在中國,聯通的3G為UMTS或HSDPA,移動和聯通的2G為GPRS或EGDE,電信的2G為CDMA。電信的3G為EVDO */ tm.getNetworkType(); /** * 返回裝置的類型 * * PHONE_TYPE_CDMA 手機制式為CDMA,電信 * PHONE_TYPE_GSM 手機制式為GSM,移動和聯通 * PHONE_TYPE_NONE 手機制式未知 */ tm.getPhoneType(); /** * 返回SIM卡供應商的國家代碼 */ tm.getSimCountryIso(); /** * 返回MCC+MNC代碼 (SIM卡電訊廠商國家代碼和電訊廠商網路代碼)(IMSI) */ tm.getSimOperator(); /** * 返回服務提供者的名稱(SPN) */ tm.getSimOperatorName(); /** * 返回SIM卡的序號(IMEI),假設是返回null為不可用。 */ tm.getSimSerialNumber(); /** * 返回一個常數表示預設的SIM卡的狀態。 * * SIM_STATE_ABSENT SIM卡未找到 * SIM_STATE_NETWORK_LOCKED SIM卡網路被鎖定,須要Network PIN解鎖 * SIM_STATE_PIN_REQUIRED SIM卡PIN被鎖定,須要User PIN解鎖 * SIM_STATE_PUK_REQUIRED SIM卡PUK被鎖定。須要User PUK解鎖 * SIM_STATE_READY SIM卡可用 * SIM_STATE_UNKNOWN SIM卡未知 */ tm.getSimState(); /** * 返回唯一的使用者ID,比如,IMSI為GSM手機。
*/ tm.getSubscriberId(); /** * 擷取語音信箱號碼關聯的字母標識 */ tm.getVoiceMailAlphaTag(); /** * 返回語音信箱號碼 */ tm.getVoiceMailNumber(); /** * 返回手機是否處於漫遊狀態 */ tm.isNetworkRoaming(); ((TextView) findViewById(R.id.tv_info)).setText(getInfo()); } public String getInfo() { String info = "擷取裝置編號: " + tm.getDeviceId(); info += "\n擷取SIM卡供應商的國家代碼: " + tm.getSimCountryIso(); info += "\n擷取SIM卡序號: " + tm.getSimSerialNumber(); info += "\n擷取網路電訊廠商代號: " + tm.getNetworkOperator(); info += "\n擷取網路電訊廠商名稱: " + tm.getNetworkOperatorName(); info += "\n擷取裝置當前位置: " + tm.getCellLocation(); info += "\n擷取手機類型: " + tm.getPhoneType(); info += "\n手機號碼: " + tm.getLine1Number(); info += "\n國際長途區號: " + tm.getNetworkCountryIso(); info += "\n擷取網路類型: " + tm.getNetworkType(); info += "\n擷取資料連線狀態: " + tm.getDataState(); return info; }}
以下一些解釋:
(1)IMSI是國際移動使用者識別碼的簡稱(International Mobile Subscriber Identity)
IMSI共同擁有15位。其結構例如以下:
MCC+MNC+MIN
MCC:Mobile Country Code。移動國家碼,共3位,中國為460;
MNC:Mobile NetworkCode。移動網路碼。共2位
在中國,移動的代碼為電00和02,聯通的代碼為01,電信的代碼為03
合起來就是(也是Android手機中APN設定檔裡的代碼):
中國移動:46000 46002
中國聯通:46001
中國電信:46003
(2)IMEI是International Mobile Equipment Identity (國際行動裝置標識)的簡稱
IMEI由15位元字組成的”電子串號”,它與每台手機一一相應。並且該碼是全世界唯一的
其組成為:
1. 前6位元(TAC)是”型號核准號碼”,一般代表機型
2. 接著的2位元(FAC)是”最後裝配號”。一般代表產地
3. 之後的6位元(SNR)是”串號”。一般代表生產順序號
4. 最後1位元(SP)一般是”0″,為檢驗碼。眼下暫備用
參考:http://www.cnblogs.com/linjiqin/archive/2011/02/26/1965682.html
Android TelephonyManager類的使用