TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager 的使用 TelephonyManager 提供設備上獲取通訊服務資訊的入口,應用程式使用這個類的方法來獲取電話的服務商或者狀態。程式也可以註冊一個監聽器來監聽電話狀態的改變。 不需要直接產生實體這個類,使用Context.getSystemService(Context.TELEPHONY_SERVICE)來獲取這個類的實例。

 

注意:一些電話資訊需要相應的許可權。 方法無效

 

getSimOperatorName() ?Returns the Service Provider Name (SPN). // 獲取服務提供者名字,比如電信,聯通,移動 用下麵的方法 第一種方法: 獲取手機的IMSI碼,並判斷是中國移動/中國聯通/中國電信

 

TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

 

/** 獲取SIM卡的IMSI碼 * SIM卡唯一標識:IMSI 國際移動使用者識別碼(IMSI:International Mobile Subscriber Identification Number)是區別移動使用者的標誌, * 儲存在SIM卡中,可用於區別移動使用者的有效資訊。

 

IMSI由MCC、MNC、MSIN組成,其中MCC為移動國家號碼,由3位數位組成, * 唯一地識別移動客戶所屬的國家,我國為460;MNC為網路id,由2位數位組成, * 用於識別移動客戶所歸屬的移動網路,中國移動為00,中國聯通為01,中國電信為03;

 

MSIN為移動客戶識別碼,採用等長11位數位構成。 *

 

唯一地識別國內GSM移動通信網中移動客戶。所以要區分是移動還是聯通,只需取得SIM卡中的MNC欄位即可 */

 

String imsi = telManager.getSubscriberId();

 

if(imsi!=null){ if(imsi.startsWith(“46000″) || imsi.startsWith(“46002″))

 

{//因為移動網路編號46000下的IMSI已經用完,所以虛擬了一個46002編號,134/159號段使用了此編號 //中國移動

 

}else if(imsi.startsWith(“46001″)){

 

//中國聯通

 

}else if(imsi.startsWith(“46003″)){

 

//中國電信

 

} }

 

第二種方法 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String operator = telManager.getSimOperator();

 

if(operator!=null){ if(operator.equals(“46000″) || operator.equals(“46002″)|| operator.equals(“46007″)){

 

//中國移動

 

}else if(operator.equals(“46001″)){

 

//中國聯通

 

}else if(operator.equals(“46003″)){

 

//中國電信

 

} }

 

在檔AndroidManifest.xml中添加許可權 其他方法具體使用方法請查看API 文檔TelephonyManager中方法說明。

 

在檔 AndroidManifest.xml 中添加許可權 <uses-permission android:name= "android.permission.READ_PHONE_STATE"/>




 

TelephonyManager tel = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE);

 

String simOperator = tel.getSimOperator();

 

IMSI共有15位,其結構如下: MCC+MNC+MIN MCC:Mobile Country Code,移動國家碼,共3位,中國為460; MNC:Mobile Network Code,移動網路碼,共2位,電信03,移動02,聯通GSM 01,一個典型的IMSI號碼為460030912121001; MIN共有10位,其結構如下: 09+M0M1M2M3+ABCD 其中的M0M1M2M3和MDN號碼中的H0H1H2H3可存在對應關係,ABCD四位為自由分配。 可以看出IMSI在MIN號碼前加了MCC,可以區別出每個使用者的來自的國家,因此可以實現國際漫遊。在同一個國家內,如果有多個CDMA運營商,可以通過MNC來進行區別.

 

功能 說明

 

getCellLocation() 返回的儲存格位置的裝置 ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION

 

getDeviceId() 返回的IMEI / MEID的設備。 如果該設備是GSM設備 然後IMEI號將被退回,如果該設備是一個CDMA設備然後MEID 將被退回 READ_PHONE_STATE

 

getLine1Number() 返回設備的電話號碼(MSISDN號碼) READ_PHONE_STATE

 

getNetworkOperatorName() 返回註冊的網路運營商的名字

 

getNetworkOperator() 返回的MCC +跨國公司的註冊網路運營商

 

getNetworkCountryIso() 返回註冊的網路運營商的國家代碼

 

getSimCountryIso() 返回SIM卡運營商的國家代碼 READ_PHONE_STATE

 

getSimOperator() 返回SIM卡運營商的單個核細胞數+冶 READ_PHONE_STATE

 

getSimOperatorName() 返回SIM卡運營商的名字 READ_PHONE_STATE

 

getSimSerialNumber() 返回SIM卡的序號 READ_PHONE_STATE

 

getNetworkType() 返回網路設備可用的類型。 這將是 下列其中一個值:

 

TelephonyManager.NETWORK_TYPE_UNKNOWN TelephonyManager.NETWORK_TYPE_GPRS TelephonyManager.NETWORK_TYPE_EDGE TelephonyManager.NETWORK_TYPE_UMTS READ_PHONE_STATE getPhoneType() 返回設備的類型。 這將是以下值之一: TelephonyManager.PHONE_TYPE_NONE TelephonyManager.PHONE_TYPE_GSM TelephonyManager.PHONE_TYPE_CDMA READ_PHONE_STATE getSubscriberId() 返回使用者識別碼(的IMSI)的設備 READ_PHONE_STATE

 

getNeighboringCellInfo() 返回NeighboringCellInfo類代表名單 相鄰社區的資訊,如果可用,否則將 返回null ACCESS_COARSE_UPDATES
arrow
arrow
    全站熱搜

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