TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE); html
注意:一些電話信息須要相應的權限。 android
// 獲取服務提供商名字,好比電信,聯通,移動用下面的方法第一種方法: 獲取手機的IMSI碼,並判斷是中國移動\中國聯通\中國電信 網絡
getSimOperatorName() //Returns the Service Provider Name (SPN).
IMSI 國際移動用戶識別碼(IMSI:International Mobile Subscriber Identification Number)是區別移動用戶的標誌, 儲存在SIM卡中,可用於區別移動用戶的有效信息。 ide
IMSI由MCC、MNC、MSIN組成, spa
其中MCC爲移動國家號碼,由3位數字組成 // 惟一地識別移動客戶所屬的國家,我國爲460; .net
MNC爲網絡id,由2位數字組成// 用於識別移動客戶所歸屬的移動網絡,中國移動爲00,中國聯通爲01,中國電信爲03; code
MSIN爲移動客戶識別碼,採用等長11位數字構成 //惟一地識別國內GSM移動通訊網中移動客戶。 xml
能夠看出IMSI在MIN號碼前加了MCC,能夠區別出每一個用戶的來自的國家,所以能夠實現國際漫遊。 htm
在同一個國家內,若是有多個CDMA運營商,能夠經過MNC來進行區別. blog
因此要區分是移動仍是聯通,只需取得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"/>
功能 說明
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
http://www.360doc.com/content/12/1113/15/9462341_247605373.shtml