android 獲取sim卡運營商信息(轉)


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

注意:一些電話信息需要相應的權限。

// 獲取服務提供商名字,比如電信,聯通,移動用下面的方法第一種方法: 獲取手機的IMSI碼,並判斷是中國移動\中國聯通\中國電信

getSimOperatorName()  //Returns the Service Provider Name (SPN).

IMSI 國際移動用戶識別碼(IMSI:International Mobile Subscriber Identification Number)是區別移動用戶的標志, 儲存在SIM卡中,可用於區別移動用戶的有效信息。

IMSI由MCC、MNC、MSIN組成,

其中MCC為移動國家號碼,由3位數字組成 // 唯一地識別移動客戶所屬的國家,我國為460;

MNC為網絡id,由2位數字組成// 用於識別移動客戶所歸屬的移動網絡,中國移動為00,中國聯通為01,中國電信為03;

MSIN為移動客戶識別碼,采用等長11位數字構成 //唯一地識別國內GSM移動通信網中移動客戶。

可以看出IMSI在MIN號碼前加了MCC,可以區別出每個用戶的來自的國家,因此可以實現國際漫游。

在同一個國家內,如果有多個CDMA運營商,可以通過MNC來進行區別.

所以要區分是移動還是聯通,只需取得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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM