TelephonyManager類主要提供了一系列用於訪問與手機通訊相關的狀態和資訊的get方法。其中包括手機SIM的狀態和資訊、電信網路的狀態及手機使用者的資訊。在應用程式中可以使用這些get方法獲取相關資料。

TelephonyManager類的物件可以通過Context.getSystemService(Context.TELEPHONY_SERVICE)方法來獲得,需要注意的是有些通訊資訊的獲取對應用程式的許可權有一定的限制,在開發的時候需要為其添加相應的許可權。



以下列出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);
/**
* 返回電話狀態
*
* CALL_STATE_IDLE 無任何狀態時
* CALL_STATE_OFFHOOK 接起電話時
* CALL_STATE_RINGING 電話進來時
*/
tm.getCallState();
//返回當前移動終端的位置
CellLocation location=tm.getCellLocation();
//請求位置更新,如果更新將產生廣播,接收物件為註冊LISTEN_CELL_LOCATION的物件,需要的permission名稱為ACCESS_COARSE_LOCATION。
location.requestLocationUpdate();
/**
* 獲取資料活動狀態
*
* DATA_ACTIVITY_IN 資料連接狀態:活動,正在接受資料
* DATA_ACTIVITY_OUT 資料連接狀態:活動,正在發送資料
* DATA_ACTIVITY_INOUT 資料連接狀態:活動,正在接受和發送資料
* DATA_ACTIVITY_NONE 資料連接狀態:活動,但無資料發送和接受
*/
tm.getDataActivity();
/**
* 獲取資料連接狀態
*
* DATA_CONNECTED 資料連接狀態:已連接
* DATA_CONNECTING 資料連接狀態:正在連接
* DATA_DISCONNECTED 資料連接狀態:斷開
* DATA_SUSPENDED 資料連接狀態:暫停
*/
tm.getDataState();
/**
* 返回當前移動終端的唯一標識
*
* 如果是GSM網路,返回IMEI;如果是CDMA網路,返回MEID
*/
tm.getDeviceId();
//返回移動終端的軟體版本,例如:GSM手機的IMEI/SV碼。
tm.getDeviceSoftwareVersion();
//返回手機號碼,對於GSM網路來說即MSISDN
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();
tm.getSimOperatorName();
//返回SIM卡的序號(IMEI)
tm.getSimSerialNumber();
/**
* 返回移動終端
*
* 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();
//返回使用者唯一標識,比如GSM網路的IMSI編號
tm.getSubscriberId();
//獲取語音信箱號碼關聯的字母標識。
tm.getVoiceMailAlphaTag();
//返回語音郵件號碼
tm.getVoiceMailNumber();
tm.hasIccCard();
//返回手機是否處於漫遊狀態
tm.isNetworkRoaming();
// tm.listen(PhoneStateListener listener, int events) ;

 

//解釋:
//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
//舉例,一個典型的IMSI號碼為460030912121001

 

//IMEI是International Mobile Equipment Identity (國際移動設備標識)的簡稱
//IMEI由15位數位組成的”電子串號”,它與每台手機一一對應,而且該碼是全世界唯一的
//其組成為:
//1. 前6位數(TAC)是”型號核准號碼”,一般代表機型
//2. 接著的2位數(FAC)是”最後裝配號”,一般代表產地
//3. 之後的6位數(SNR)是”串號”,一般代表生產順序號
//4. 最後1位數(SP)通常是”0″,為檢驗碼,目前暫備用
}
}


本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文連結:http://www.linuxidc.com/Linux/2011-05/35733.htm
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()