TelephonyManager是一個管理手機通話狀態、電話網絡信息的服務類,該類提供了大量的getXxx(),方法獲取電話網絡的相關信息。
TelephonyManager類概述:
可用於訪問有關設備上的電話服務信息。應用程序可以使用這個類的方法來確定電話服務和狀態,以及訪問某些類型的用戶信息。應用程序還可以注冊一個偵聽器以接收的電話狀態變化通知。
你不能直接實例化這個類;相反,你可以通過Context.getSystemService(Context.TELEPHONY_SERVICE)方法還獲取初始化TelephonyManager實例。
需要注意的是訪問某些電話信息permission-protected。。你的應用程序應該獲得訪問手機位置和狀態的的一些權限。
TelephonyManager類提供的主要的方法:
Public Methods
int
getCallState()
返回一個常數,表示設備上的呼叫狀態
CellLocation
getCellLocation()
返回設備的當前位置。
int
getDataActivity()
返回一個常數,表示活動的數據連接的類型。
int
getDataState()
返回一個常數表示當前數據連接狀態
String
getDeviceId()
返回唯一的設備ID,例如,IMEI GSM和MEID
CDMA手機。
String
getDeviceSoftwareVersion()
返回設備的軟件版本號,例如,的IMEI
/ SV GSM手機。
String
getLine1Number()
返回1號線的電話號碼,例如,MSISDN用於GSM電話。
List
getNeighboringCellInfo()
返回設備的相鄰小區信息。
String
getNetworkCountryIso()
返回注冊的網絡運營商的國家代碼
String
getNetworkOperator()
返回的MCC +跨國公司的注冊網絡運營商
String
getNetworkOperatorName()
返回注冊的網絡運營商的名字
int
getNetworkType()
返回一個常數,表示目前在設備上使用的無線電技術(網絡類型)。
int
getPhoneType()
返回設備的類型(手機制式)。
String
getSimCountryIso()
返回SIM卡運營商的國家代碼
String
getSimOperator()
返回MCC +跨國公司(移動國家代碼+移動網絡代碼)的提供者的SIM卡。
String
getSimOperatorName()
返回服務提供者的名稱(SPN)。
String
getSimSerialNumber()
返回SIM卡的序列號,如果適用的話。
int
getSimState()
返回一個常數表示SIM卡設備的狀態。
String
getSubscriberId()
返回唯一的用戶ID,例如,IMSI為GSM手機。
String
getVoiceMailAlphaTag()
檢索與語音信箱號碼相關的字母標識符。
String
getVoiceMailNumber()
返回語音信箱號碼。
boolean
hasIccCard()
boolean
isNetworkRoaming()
返回true,如果該設備被認為是漫游當前網絡上,支持GSM目的。
void
listen(PhoneStateListener listener, int events)
注冊一個偵聽器對象接收改變指定的電話狀態的通知。
應用實例:
運行效果圖:
TelephonyStatus類:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">package com.jph.telephonystatus;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
* Describe:
* 獲取Sim卡信息
* 本實例通過TelephonyManager類的對象的getXxx()
* 方法獲取手機Sim卡信息。
* @author jph
* Date:2014.07.22
* */
public class TelephonyStatus extends Activity {
ListView listShow;
//創建一個tManager類的實例
TelephonyManager tManager;
//聲明一個表示Sim卡狀態名的數組
String []statusName=new String[]{};
//聲明一個表示Sim卡狀態值得集合
ArrayListstatusValue=new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listShow=(ListView)findViewById(R.id.listShow);
//獲取系統的tManager對象
tManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//獲取表示各種狀態名的數組
statusName=getResources().getStringArray(R.array.statusName);
//獲取表示sim卡狀態的的數組
String simStatus[]=getResources().getStringArray(R.array.simStatus);
//獲取表示手機類型的數組
String phoneType[]=getResources().getStringArray(R.array.phoneType);
//獲取設備編號
statusValue.add(tManager.getDeviceId());
//獲取設備類型
statusValue.add(phoneType[tManager.getPhoneType()]);
//獲取軟件版本
statusValue.add(tManager.getDeviceSoftwareVersion()==null?"未知"
:tManager.getDeviceSoftwareVersion());
//獲取設備當前位置
statusValue.add(tManager.getCellLocation()==null? "未知"
:tManager.getCellLocation().toString());
//獲取設備呼叫狀態
switch (tManager.getCallState()) {
case TelephonyManager.CALL_STATE_IDLE:
statusValue.add("空閒");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
statusValue.add("正在通話");
break;
case TelephonyManager.CALL_STATE_RINGING:
statusValue.add("等待接聽");
break;
default:
break;
}
//獲取電話號碼
statusValue.add(tManager.getLine1Number());
//獲取運營商的國家代碼
statusValue.add(tManager.getNetworkCountryIso());
//獲取運營商的名稱
statusValue.add(tManager.getNetworkOperatorName());
//獲取網絡類型
statusValue.add(getNetworkType(tManager.getNetworkType()));
//獲取SPN
statusValue.add(tManager.getSimOperatorName().equals("")?"未知"
:tManager.getSimOperatorName());
//獲取SIM卡的序列號
statusValue.add(tManager.getSimSerialNumber());
//獲取SIM卡狀態
statusValue.add(simStatus[tManager.getSimState()]);
List