TelephonyManager
TelephonyManager是Telephony套件中的一個類別,主要存取有關裝置上有關電話服務的資訊,應用程式可以利用此類別提供的方法決定電話服務與狀態;應用程式也可以註冊監聽器接收電話狀態的改變通知。
不需要直接創建此類別的實列,你可以透用Context.getSystemService(Context.TELEPHONY_SERVICE)獲得TelephonyManager實例。
注意,有些電話資訊有權限的保護,所以想獲得一些電話資訊時,必須在Manifest文件中宣告相對應的權限。
int getCallState();
取得通話狀態,回傳值為整數,分別為
CALL_STATE_IDLE閒置狀態、
CALL_STATE_OFFHOOK通話狀態、
CALL_STATE_RINGING來電狀態。
CellLocation getCellLocation();
取得基地台的位置。
需宣告權限ACCESS_COARSE_LOCATION或是ACCESS_FINE_LOCATION。
int getDataActivity();
取得行動網路運作狀態。
DATA_ACTIVITY_IN行動網路運作狀態為正在接收數據、
DATA_ACTIVITY_OUT行動網路運作狀態為正在發送數據、
DATA_ACTIVITY_INOUT行動網路運作狀態為正在接收及發送數據、
DATA_ACTIVITY_NONE行動網路運作狀態為無任何數據接收與發送。
int getDataState();
取得行動網路連線狀態。
DATA_CONNECTED行動網路連線狀態為已連線、
DATA_CONNECTING行動網路連線狀態為正在連線、
DATA_DISCONNECTED行動網路連線狀態為離線、
DATA_SUSPENDED行動網路連線狀態為暫停。
String getDeviceId();
取得裝置的唯一識別碼,GSM行動網路為IMEI識別碼;ESN或是CDMA行動網路為MEID識別碼。
需宣告權限READ_PHONE_STATE。
String getDeviceSoftwareVersion()
取得裝置的軟體版本編號,例如GSM為IMEI/SV碼。
需宣告權限READ_PHONE_STATE。
String getLine1Number();
取得Line1的號碼,例如,GSM電話為MSISDN號碼。
需宣告權限READ_PHONE_STATE。
List<NeighborCellInfo> getNeighborCellInfo();
取得鄰近裝置的基地台資訊。
String getNetworkCountryIso();
取得標準的國際國家碼,及長途區碼
String getNetworkOperator();
取得MCC+MNC代碼(sim卡營運商+營運商網路代碼)
String getNetworkOperatorName();
取得電信營運商的名字。
int getNetworkType();
取得行動網路的類型。
NETWORK_TYPE_UNKNOW行動網路類行為未知、
NETWORK_TYPE_GPRS行動網路類行為GPRS、
NETWORK_TYPE_EDGE行動網路類行為EDGE、
NETWORK_TYPE_UMTS行動網路類行為UMTS、
NETWORK_TYPE_HSDPA行動網路類行為HSDPA、
NETWORK_TYPE_HSDPA行動網路類行為HSDPA、
NETWORK_TYPE_HSPA行動網路類行為HSPA、
NETWORK_TYPE_CDMA行動網路類行為CDMA、
NETWORK_TYPE_EVDO_0行動網路類行為EVDO_0、
NETWORK_TYPE_EVDO_A行動網路類行為EVDO_A、
NETWORK_TYPE_EVDO_B行動網路類行為EVDO_B
NETWORK_TYPE_1xRTT行動網路類行為1xRTT、
NETWORK_TYPE_IDEN行動網路類行為IDEN、
NETWORK_TYPE_LTE行動網路類行為LTE、
NETWORK_TYPE_EHRPO行動網路類行為EHRPO、
NETWORK_TYPE_HSPAP行動網路類行為HSPAP
int getPhoneType();
取得電話系統類型。
PHONE_TYPE_NONE電話系統為未知、
PHONE_TYPE_GSM電話系統為GSM、
PHONE_TYPE_CDMA電話系統為CDMA、
PHONE_TYPE_SIP電話系統為SIP
String getSimCountryIso();
取得sim卡供應商的國家識別碼。
String getSimOperator();
取得MCC+MNC代碼(mobile country code + mobile network code),大約是5或6個位數
String getSimOperatorName();
取得供應商名字。
String getSimSerialNumber();
取得sim卡序號。
需宣告權限READ_PHONE_STATE。
int getSimState();
取得sim卡狀態。
SIM_STATE_UNKNOWsim卡狀態為未知、
SIM_STATE_ABSENTsim卡狀態為未找到、
SIM_STATE_PIN_REQUIREDsim卡PIN被鎖定,需要User PIN解鎖、
SIM_STATE_PUN_REQUIREDsim卡PUN被鎖定,需要User PUN解鎖、
SIM_STATE_NETWORK_LOCKEDsim卡網路被鎖,需要Network PIN解鎖、
SIM_STATE_READYsim卡可用
String getSubscriberId();
取得用戶唯一識別碼,例如GSM的IMSI識別碼。
需宣告權限READ_PHONE_STATE。
String getVoiceMailAlphaTag();
取得語音信箱關聯的標示。
需宣告權限READ_PHONE_STATE。
String getVoiceMailNumber();
取得語音郵件號碼。
需宣告權限READ_PHONE_STATE。
boolean isNetworkRoaming();
取得手機是否處在漫遊狀態
void listen(PhoneStateListener listenr , int events)
註冊監聽器,接收電話狀態改變的通知。
例子
getNetworkOperator()取得的數值,台灣區的列表。
返回數值為46601為遠傳電信、46602亞太電信、...。
getPhoneType();
參考各式各樣的手機與電信系統文章。
沒有留言:
張貼留言