標籤:android framework層 telephony
上一篇文章中學習了android.provider中Telephony類。這一篇文章學習android.telephony包中的類,這些類是android提供給上層調用的API。
為監測基本電話資訊提供的一系列的API。例如網路類型,串連狀態,操作電話號碼的工具類。
一共25個類。下面逐一介紹:
TelephonyManager
處理裝置上的電話語音資訊,應用可以使用這些方法檢測電話的狀態,處理使用者的資訊類型。也可以註冊一個監聽器接受電話狀態改變的通知。該類不能直接執行個體化,可以通過
Context.getSystemService(Context.TELEPHONY_SERVICE)
來獲得該執行個體。如果想訪問受保護的資訊,需要在設定檔裡配置相應的許可權才能訪問。
Constants
- ACTION_PHONE_STATE_CHANGE:當call狀態改變時發送一個廣播意圖。
- ACTION_RESPOND_VIA_MESSAGE:當使用者使用簡訊拒接時,發送一個意圖電泳sms app去傳送簡訊
- CALL_STATE_IDLE:裝置狀態:no activity
- CALL_STATE_OFFHOOK:裝置狀態:掛斷
- CALL_STATE_RINGING:裝置狀態:有撥打電話
- DATA_ACTIVITY_DORMANT:資料連線處於活動狀態,但是物理串連時關閉的
- DATA_ACTIVITY_IN:資料連線處於活動狀態,當前接受IP PPP流量
- DATA_ACTIVITY_INOUT:接受和發送IP PPP流量
- DATA_ACTIVITY_NONE:資料連線處於活動狀態,但是無流量
- DATE_ACTIVITY_OUT:資料連線屬於串連狀態,發送IP PPP流量
- DATA_CONNECTED:資料連線狀態:已串連
- DATA_CONNECTING:正在建立資料連線
- DATA_DISCONNECTED:資料連線斷開
- DATA_SUSPENDED:資料連線中斷
- EXTRA_INCOMING_NUMBER:當call狀態改變時發送意圖裡麵包含的來電電話號碼
- EXTRA_STATE:來電狀態
- NETWORK_TYPE_1xRTT:2G網路
- NETWORK_TYPE_CDMA:碼分多址協議
- NETWORK_TYPE_EDGE:即增強型資料速率GSM演化技術,GSM過渡到3G的協議
- NETWORK_TYPE_EHRPD:CDMA過渡到LTE的協議
- NETWORK_TYPE_EVDO_0:EVDO_0網路類型
- NETWORK_TYPE_EVDO_A:EVDO_A網路類型
- NETWORK_TYPE_EVDO_B:EVDO_B網路類型
- NETWORK_TYPE_GPRS:GRPS(通用分組無線服務技術)網路類型
- NETWORK_TYPE_HSDPA:HSDPA網路類型
- NETWORK_TYPE_HSPAP:HSPAP(高速下行分組接入,3.5G)網路類型
- NETWORK_TYPE_HSUPA:HSUPA(高速上行鏈路分組接入)網路類型
- NETWORK_TYPE_IDEN:IDEN(叢集通訊系統)網路類型
- NETWORK_TYPE_LTE:LTE(長期演化技術,UMTS的進步版)網路類型
- NETWORK_TYPE_UMTS:UMTS(通用移動通訊系統)網路類型
- NETWORK_TYPE_UNKNOWN:未知網路類型
- PHONE_TYPE_CDMA:CDMA格式的手機
- PHONE_TYPE_GSM:GSM格式的手機
- PHONE_TYPE_NONE:沒有手機射頻
- PHONE_TYPE_SIP:基於SIP協議的手機
- SIM_STATE_ABSENT:SIM卡狀態:尋找不到
- SIM_STATE_NETWORK_LOCKED:SIM狀態:鎖定,需要網路數字 PIN 碼解鎖
- SIM_STATE_PIN_REQUIRED:SIM狀態:鎖定,需要使用者數字 PIN 碼解鎖
- SIM_STATE_PUK_REQUIRED:SIM卡狀態:鎖定,需要解鎖卡解鎖
- SIM_STATE_READY:SIM卡狀態:準備(Ready)
- SIM_STATE_UNKNOWN:SIM卡狀態:未知(Unknown)
Methods
List<CellInfo> getAllCellInfo()
得到所有電元資訊
int getCallState()
當前通話狀態
CellLocation getCellLocation()
擷取當前裝置的位置
int getDataActivity()
資料連線中的activity的類型
int getDataState()
資料連線的狀態
String getDeviceId()
裝置的ID號
String getDeviceSoftwareVersion()
裝置的軟體版本
String getGroupIdLevel1()
GSM手機的groupId level1
String getLine1Number()
擷取1號線的電話號碼,例如GSM手機的MSISDN。需要許可權:READ_PHONE_STATE.
String getMmsUAProfUrl()
簡訊代理商的URL
String getMmsUserAgent()
簡訊代理商
List<NeighboringCellInfo> getNeighboringCellInfo()
擷取所有鄰電元資訊
String getNetworkCountryIso()
網路電訊廠商的國家碼MCC
String getNetworkOperator()
網路註冊電訊廠商的MCC+MNC碼
String getNetworkOperatorName()
網路電訊廠商的名稱
String getNetworkType()
網路類型
String getPhoneType()
手機類型
String getSimCountryIso()
ISO提供的國家代碼
String getSimOperator()
擷取SIM卡5位或6位移動國家碼MCC+移動網路碼MNC
String getSimOperatorName()
得到服務提供者的名稱
String getSimSerialNumber()
得到sim串口號
String getSimState()
得到sim卡的狀態
String getSubscriberId()
唯一使用者標識ID。代表使用者的身份,例如GSM手機的IMSI號
String getVoiceMailAlphaTag()
得到與語音信箱號碼有關的字母標識符,需要許可權READ_PHONE_STATE;
String getVoiceMailNumber()
得到語音信箱的號碼
boolean hasIccCard()
是否含有ICC卡
boolean isNetworkRoaming()
是否漫遊
void listen(PhoneStateListenter,int)
註冊一個監聽器,當指定的手機狀態改變時,接收該手機發出的通知