Android TelephonyManager類的使用

來源:互聯網
上載者:User

標籤:ever   gprs   mail   html   find   soft   dma   serial   access   

TelephonyManager類主要提供了一系列擷取手機與通訊相關的狀態和資訊的get方法,包含手機使用者的資訊、手機SIM的狀態、電信網路的狀態等。
TelephonyManager類的對象的擷取:

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

在開發的時候不要忘記了在設定檔裡為其加入相應的許可權哦

<!--同意讀取電話狀態SIM的許可權-->    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <!-- 這個許可權用於進行網路定位 -->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

以下簡單列出TelephonyManager類的一些方法

package com.xiaolijuan.getphoneinfo;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.telephony.NeighboringCellInfo;import android.telephony.TelephonyManager;import android.widget.TextView;import java.util.List;public class MainActivity extends Activity {    private TelephonyManager tm = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);        /**         * 擷取當前裝置的位置         */        tm.getCellLocation().toString();        /**         * 擷取資料連線狀態         *         * DATA_CONNECTED 資料連線狀態:已串連         * DATA_CONNECTING 資料連線狀態:正在串連         * DATA_DISCONNECTED 資料連線狀態:斷開         * DATA_SUSPENDED 資料連線狀態:暫停         */        tm.getDataState();        /**         * 返回唯一的裝置ID         * 假設是GSM網路。返回IMEI;假設是CDMA網路。返回MEID;假設裝置ID是停用返回null         */        tm.getDeviceId();        /**         * 返回裝置的軟體版本號碼號         * 比如:GSM手機的IMEI/SV碼。假設軟體版本號碼是返回null。假設不可用返回null         */        tm.getDeviceSoftwareVersion();        /**         * 返回手機號碼         * 對於GSM網路來說即MSISDN,假設不可用返回null         */        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(); /** * 返回服務提供者的名稱(SPN) */ tm.getSimOperatorName(); /** * 返回SIM卡的序號(IMEI),假設是返回null為不可用。 */ tm.getSimSerialNumber(); /** * 返回一個常數表示預設的SIM卡的狀態。 * * 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(); /** * 返回唯一的使用者ID,比如,IMSI為GSM手機。

*/ tm.getSubscriberId(); /** * 擷取語音信箱號碼關聯的字母標識 */ tm.getVoiceMailAlphaTag(); /** * 返回語音信箱號碼 */ tm.getVoiceMailNumber(); /** * 返回手機是否處於漫遊狀態 */ tm.isNetworkRoaming(); ((TextView) findViewById(R.id.tv_info)).setText(getInfo()); } public String getInfo() { String info = "擷取裝置編號: " + tm.getDeviceId(); info += "\n擷取SIM卡供應商的國家代碼: " + tm.getSimCountryIso(); info += "\n擷取SIM卡序號: " + tm.getSimSerialNumber(); info += "\n擷取網路電訊廠商代號: " + tm.getNetworkOperator(); info += "\n擷取網路電訊廠商名稱: " + tm.getNetworkOperatorName(); info += "\n擷取裝置當前位置: " + tm.getCellLocation(); info += "\n擷取手機類型: " + tm.getPhoneType(); info += "\n手機號碼: " + tm.getLine1Number(); info += "\n國際長途區號: " + tm.getNetworkCountryIso(); info += "\n擷取網路類型: " + tm.getNetworkType(); info += "\n擷取資料連線狀態: " + tm.getDataState(); return info; }}

以下一些解釋:
(1)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

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

參考:http://www.cnblogs.com/linjiqin/archive/2011/02/26/1965682.html

Android TelephonyManager類的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.