TelephonyManager類的方法詳解

TelephonyManager類主要提供了一系列用于訪問與手機(jī)通訊相關(guān)的狀態(tài)和信息的get方法。其中包括手機(jī)SIM的狀態(tài)和信息、電信網(wǎng)絡(luò)的狀態(tài)及手機(jī)用戶的信息。在應(yīng)用程序中可以使用這些get方法獲取相關(guān)數(shù)據(jù)。

TelephonyManager類的對(duì)象可以通過Context.getSystemService(Context.TELEPHONY_SERVICE)方法來獲得,需要注意的是有些通訊信息的獲取對(duì)應(yīng)用程序的權(quán)限有一定的限制,在開發(fā)的時(shí)候需要為其添加相應(yīng)的權(quán)限。

以下列出TelephonyManager類所有方法及說明:

package com.ljq.activity;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.CellLocation;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;

public class TelephonyManagerActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        /**
         * 返回電話狀態(tài)
         * 
         * CALL_STATE_IDLE 無任何狀態(tài)時(shí) 
         * CALL_STATE_OFFHOOK 接起電話時(shí)
         * CALL_STATE_RINGING 電話進(jìn)來時(shí) 
         */
        tm.getCallState();
        //返回當(dāng)前移動(dòng)終端的位置
        CellLocation location=tm.getCellLocation();
        //請(qǐng)求位置更新,如果更新將產(chǎn)生廣播,接收對(duì)象為注冊(cè)LISTEN_CELL_LOCATION的對(duì)象,需要的permission名稱為ACCESS_COARSE_LOCATION。
        location.requestLocationUpdate();
        /**
         * 獲取數(shù)據(jù)活動(dòng)狀態(tài)
         * 
         * DATA_ACTIVITY_IN 數(shù)據(jù)連接狀態(tài):活動(dòng),正在接受數(shù)據(jù)
         * DATA_ACTIVITY_OUT 數(shù)據(jù)連接狀態(tài):活動(dòng),正在發(fā)送數(shù)據(jù)
         * DATA_ACTIVITY_INOUT 數(shù)據(jù)連接狀態(tài):活動(dòng),正在接受和發(fā)送數(shù)據(jù)
         * DATA_ACTIVITY_NONE 數(shù)據(jù)連接狀態(tài):活動(dòng),但無數(shù)據(jù)發(fā)送和接受
         */
        tm.getDataActivity();
        /**
         * 獲取數(shù)據(jù)連接狀態(tài)
         * 
         * DATA_CONNECTED 數(shù)據(jù)連接狀態(tài):已連接
         * DATA_CONNECTING 數(shù)據(jù)連接狀態(tài):正在連接
         * DATA_DISCONNECTED 數(shù)據(jù)連接狀態(tài):斷開
         * DATA_SUSPENDED 數(shù)據(jù)連接狀態(tài):暫停
         */
        tm.getDataState();
        /**
         * 返回當(dāng)前移動(dòng)終端的唯一標(biāo)識(shí)
         * 
         * 如果是GSM網(wǎng)絡(luò),返回IMEI;如果是CDMA網(wǎng)絡(luò),返回MEID
         */
        tm.getDeviceId();
        //返回移動(dòng)終端的軟件版本,例如:GSM手機(jī)的IMEI/SV碼。
        tm.getDeviceSoftwareVersion();
        //返回手機(jī)號(hào)碼,對(duì)于GSM網(wǎng)絡(luò)來說即MSISDN
        tm.getLine1Number();
        //返回當(dāng)前移動(dòng)終端附近移動(dòng)終端的信息
        List<NeighboringCellInfo> infos=tm.getNeighboringCellInfo();
        for(NeighboringCellInfo info:infos){
            //獲取鄰居小區(qū)號(hào)
            int cid=info.getCid();
            //獲取鄰居小區(qū)LAC,LAC: 位置區(qū)域碼。為了確定移動(dòng)臺(tái)的位置,每個(gè)GSM/PLMN的覆蓋區(qū)都被劃分成許多位置區(qū),LAC則用于標(biāo)識(shí)不同的位置區(qū)。
            info.getLac();
            info.getNetworkType();
            info.getPsc();
            //獲取鄰居小區(qū)信號(hào)強(qiáng)度  
            info.getRssi();
        }
        //返回ISO標(biāo)準(zhǔn)的國(guó)家碼,即國(guó)際長(zhǎng)途區(qū)號(hào)
        tm.getNetworkCountryIso();
        //返回MCC+MNC代碼 (SIM卡運(yùn)營(yíng)商國(guó)家代碼和運(yùn)營(yíng)商網(wǎng)絡(luò)代碼)(IMSI)
        tm.getNetworkOperator();
        //返回移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商的名字(SPN)
        tm.getNetworkOperatorName();
        /**
         * 獲取網(wǎng)絡(luò)類型
         * 
         * NETWORK_TYPE_CDMA 網(wǎng)絡(luò)類型為CDMA
         * NETWORK_TYPE_EDGE 網(wǎng)絡(luò)類型為EDGE
         * NETWORK_TYPE_EVDO_0 網(wǎng)絡(luò)類型為EVDO0
         * NETWORK_TYPE_EVDO_A 網(wǎng)絡(luò)類型為EVDOA
         * NETWORK_TYPE_GPRS 網(wǎng)絡(luò)類型為GPRS
         * NETWORK_TYPE_HSDPA 網(wǎng)絡(luò)類型為HSDPA
         * NETWORK_TYPE_HSPA 網(wǎng)絡(luò)類型為HSPA
         * NETWORK_TYPE_HSUPA 網(wǎng)絡(luò)類型為HSUPA
         * NETWORK_TYPE_UMTS 網(wǎng)絡(luò)類型為UMTS
         * 
         * 在中國(guó),聯(lián)通的3G為UMTS或HSDPA,移動(dòng)和聯(lián)通的2G為GPRS或EGDE,電信的2G為CDMA,電信的3G為EVDO
         */
        tm.getNetworkType();
        /**
         * 返回移動(dòng)終端的類型
         * 
         * PHONE_TYPE_CDMA 手機(jī)制式為CDMA,電信
         * PHONE_TYPE_GSM 手機(jī)制式為GSM,移動(dòng)和聯(lián)通
         * PHONE_TYPE_NONE 手機(jī)制式未知
         */
        tm.getPhoneType();
        //返回SIM卡提供商的國(guó)家代碼
        tm.getSimCountryIso();
        //返回MCC+MNC代碼 (SIM卡運(yùn)營(yíng)商國(guó)家代碼和運(yùn)營(yíng)商網(wǎng)絡(luò)代碼)(IMSI)
        tm.getSimOperator();
        tm.getSimOperatorName();
        //返回SIM卡的序列號(hào)(IMEI)
        tm.getSimSerialNumber();
        /**
         * 返回移動(dòng)終端
         * 
         * SIM_STATE_ABSENT SIM卡未找到
         * SIM_STATE_NETWORK_LOCKED SIM卡網(wǎng)絡(luò)被鎖定,需要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();
        //返回用戶唯一標(biāo)識(shí),比如GSM網(wǎng)絡(luò)的IMSI編號(hào)
        tm.getSubscriberId();
        //獲取語音信箱號(hào)碼關(guān)聯(lián)的字母標(biāo)識(shí)。 
        tm.getVoiceMailAlphaTag();
        //返回語音郵件號(hào)碼
        tm.getVoiceMailNumber();
        tm.hasIccCard();
        //返回手機(jī)是否處于漫游狀態(tài)
        tm.isNetworkRoaming();
        // tm.listen(PhoneStateListener listener, int events) ;
        
        //解釋:
        //IMSI是國(guó)際移動(dòng)用戶識(shí)別碼的簡(jiǎn)稱(International Mobile Subscriber Identity)
        //IMSI共有15位,其結(jié)構(gòu)如下:
        //MCC+MNC+MIN
        //MCC:Mobile Country Code,移動(dòng)國(guó)家碼,共3位,中國(guó)為460;
        //MNC:Mobile NetworkCode,移動(dòng)網(wǎng)絡(luò)碼,共2位
        //在中國(guó),移動(dòng)的代碼為電00和02,聯(lián)通的代碼為01,電信的代碼為03
        //合起來就是(也是Android手機(jī)中APN配置文件中的代碼):
        //中國(guó)移動(dòng):46000 46002
        //中國(guó)聯(lián)通:46001
        //中國(guó)電信:46003
        //舉例,一個(gè)典型的IMSI號(hào)碼為460030912121001

        //IMEI是International Mobile Equipment Identity (國(guó)際移動(dòng)設(shè)備標(biāo)識(shí))的簡(jiǎn)稱
        //IMEI由15位數(shù)字組成的”電子串號(hào)”,它與每臺(tái)手機(jī)一一對(duì)應(yīng),而且該碼是全世界唯一的
        //其組成為:
        //1. 前6位數(shù)(TAC)是”型號(hào)核準(zhǔn)號(hào)碼”,一般代表機(jī)型
        //2. 接著的2位數(shù)(FAC)是”最后裝配號(hào)”,一般代表產(chǎn)地
        //3. 之后的6位數(shù)(SNR)是”串號(hào)”,一般代表生產(chǎn)順序號(hào)
        //4. 最后1位數(shù)(SP)通常是”0″,為檢驗(yàn)碼,目前暫備用
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容