android使用TelephonyManager获取imei和其他手机信息

在AndroidManifest.xml文件中增加
<!--允许读取电话状态SIM的权限-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

代码如下

  TelephonyManager telephonyManager =
                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        //手机串号:GSM手机的IMEI 和 CDMA手机的 MEID.
        String deviceID = telephonyManager.getDeviceId();
        //手机号(有些手机号无法获取,是因为运营商在SIM中没有写入手机号)
        String tel = telephonyManager.getLine1Number();
        //获取手机SIM卡的序列号
        /**
         * Returns the serial number of the SIM, if applicable. Return null if it is
         * unavailable.
         * <p>
         * Requires Permission:
         *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
         */
        String simSerialNumber = telephonyManager.getSimSerialNumber();

        /**
         * Returns the unique subscriber ID, for example, the IMSI for a GSM phone.
         * Return null if it is unavailable.
         * <p>
         * Requires Permission:
         *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
         */
        //获取客户id,在gsm中是imsi号
        String imsi = telephonyManager.getSubscriberId();
        /**
         * Returns the current location of the device.
         *<p>
         * If there is only one radio in the device and that radio has an LTE connection,
         * this method will return null. The implementation must not to try add LTE
         * identifiers into the existing cdma/gsm classes.
         *<p>
         * In the future this call will be deprecated.
         *<p>
         * @return Current location of the device or null if not available.
         *
         * <p>Requires Permission:
         * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or
         * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION}.
         */
        //电话方位
        CellLocation str = telephonyManager.getCellLocation();
        /**
         * Returns the alphabetic name of current registered operator.
         * <p>
         * Availability: Only when user is registered to a network. Result may be
         * unreliable on CDMA networks (use {@link #getPhoneType()} to determine if
         * on a CDMA network).
         */
        //运营商名称,注意:仅当用户已在网络注册时有效,在CDMA网络中结果也许不可靠
        String networkoperatorName = telephonyManager.getNetworkOperatorName();
        /**
         * Retrieves the alphabetic identifier associated with the voice
         * mail number.
         * <p>
         * Requires Permission:
         *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
         */
        //取得和语音邮件相关的标签,即为识别符
        String voiceMail = telephonyManager.getVoiceMailAlphaTag();
        /**
         * Returns the voice mail number. Return null if it is unavailable.
         * <p>
         * Requires Permission:
         *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
         */
        //获取语音邮件号码:
        String voiceMailNumber = telephonyManager.getVoiceMailNumber();
        /**
         * Returns the ISO country code equivalent for the SIM provider's country code.
         */
        //获取ISO国家码,相当于提供SIM卡的国家码。
        String simCountryIso = telephonyManager.getSimCountryIso();
        /**
         * Returns one of the following constants that represents the current state of all
         * phone calls.
         *
         * {@link TelephonyManager#CALL_STATE_RINGING}响铃
         * {@link TelephonyManager#CALL_STATE_OFFHOOK}摘机(占用)状态
         * {@link TelephonyManager#CALL_STATE_IDLE}无活动
         */

        int callState = telephonyManager.getCallState();
        /**
         * 设备的软件版本号:
         * Returns the software version number for the device, for example,
         * the IMEI/SV for GSM phones. Return null if the software version is
         * not available.
         *
         * <p>Requires Permission:
         *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
         */
        String devicesoftware = telephonyManager.getDeviceSoftwareVersion();
        /**
         * Returns the ISO country code equivalent of the current registered
         * operator's MCC (Mobile Country Code).获取ISO标准的国家码,即国际长途区号。
         * <p>
         * Availability: Only when user is registered to a network. Result may be
         * unreliable on CDMA networks (use {@link #getPhoneType()} to determine if
         * on a CDMA network).
         */
        String networkCountry = telephonyManager.getNetworkCountryIso();
        /**
         * Returns the numeric name (MCC+MNC) of current registered operator.
         * <p>(mobile country code + mobile network code)
         * Availability: Only when user is registered to a network. Result may be
         * unreliable on CDMA networks (use {@link #getPhoneType()} to determine if
         * on a CDMA network).
         */

        String networkoperator = telephonyManager.getNetworkOperator();

        /**
         * @return the NETWORK_TYPE_xxxx for current data connection.
         * 当前使用的网络类型:
         * 例如: NETWORK_TYPE_UNKNOWN  网络类型未知  0
         * NETWORK_TYPE_GPRS     GPRS网络  1
         * NETWORK_TYPE_EDGE     EDGE网络  2
         * NETWORK_TYPE_UMTS     UMTS网络  3
         * NETWORK_TYPE_HSDPA    HSDPA网络  8
         * NETWORK_TYPE_HSUPA    HSUPA网络  9
         */
        int netWorkType = telephonyManager.getNetworkType();

        /**
         * Returns a constant indicating the device phone type.  This
         * indicates the type of radio used to transmit voice calls.
         *
         * @see #PHONE_TYPE_NONE
         * @see #PHONE_TYPE_GSM
         * @see #PHONE_TYPE_CDMA
         * @see #PHONE_TYPE_SIP
         */
        int phoneType = telephonyManager.getPhoneType();
        /**
         *  获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
         * Returns the MCC+MNC (mobile country code + mobile network code) of the
         * provider of the SIM. 5 or 6 decimal digits.
         * <p>
         * Availability: SIM state must be {@link #SIM_STATE_READY}
         *SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
         * @see #getSimState
         */
        String simOperator = telephonyManager.getSimOperator();
        /**
         * 服务商名称:
         * Returns the Service Provider Name (SPN).
         * <p>
         * Availability: SIM state must be {@link #SIM_STATE_READY}
         *SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
         * @see #getSimState
         */
        String simOperatorName = telephonyManager.getSimOperatorName();
        /**
         * Returns a constant indicating the state of the default SIM card.
         *SIM的状态信息:
         * @see #SIM_STATE_UNKNOWN
         * @see #SIM_STATE_ABSENT
         * @see #SIM_STATE_PIN_REQUIRED
         * @see #SIM_STATE_PUK_REQUIRED
         * @see #SIM_STATE_NETWORK_LOCKED
         * @see #SIM_STATE_READY
         * @see #SIM_STATE_NOT_READY
         * @see #SIM_STATE_PERM_DISABLED
         * @see #SIM_STATE_CARD_IO_ERROR
         */

        int simStat = telephonyManager.getSimState();

        /**
         * @return true if a ICC card is present
         */
        boolean hasIcc = telephonyManager.hasIccCard();

        /**
         * 是否漫游:
         * (在GSM用途下)
         * Availability: Only when user registered to a network.
         */
        boolean isRoaming = telephonyManager.isNetworkRoaming();
        /**

         * 附近的电话的信息:

         * 类型:List<NeighboringCellInfo>

         * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
         */
        List<NeighboringCellInfo> list =
                telephonyManager.getNeighboringCellInfo();//List<NeighboringCellInfo>
        /**
         * 获取数据连接状态
         * @see #DATA_ACTIVITY_NONE
         * @see #DATA_ACTIVITY_IN
         * @see #DATA_ACTIVITY_OUT
         * @see #DATA_ACTIVITY_INOUT
         * @see #DATA_ACTIVITY_DORMANT
         */
        int dataActivty = telephonyManager.getDataActivity();
发布了37 篇原创文章 · 获赞 3 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章