`
endual
  • 浏览: 3546014 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android sim卡 TelephonyManager类:Android手机及Sim卡状态的获取

 
阅读更多

2011-03-05 11:21:46 |  分类: Android |  标签: sim   android   telephonymanager    | 字号   订阅

TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息。
直接上注释后的代码,请享用

package net.sunniwell.app;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.CellLocation;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class TelManager extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
 
  /*
   * 电话状态:
   * 1.tm.CALL_STATE_IDLE=0            无活动
   * 2.tm.CALL_STATE_RINGING=1     响铃
   * 3.tm.CALL_STATE_OFFHOOK=2  摘机
   */

  tm.getCallState(); //int
 
  /*
   * 电话方位:
   */

  tm.getCellLocation(); //CellLocation
 
  /*
   * 唯一的设备ID:
   * GSM手机的 IMEI 和 CDMA手机的 MEID.
   * Return null if device ID is not available.
   */

  tm.getDeviceId(); //String
 
  /*
   * 设备的软件版本号:
   * 例如:the IMEI/SV(software version) for GSM phones.
   * Return null if the software version is not available.
   */

  tm.getDeviceSoftwareVersion(); //String
 
  /*
   * 手机号:
   * GSM手机的 MSISDN.
   * Return null if it is unavailable.
   */

  tm.getLine1Number(); //String
 
  /*
   * 附近的电话的信息:
   * 类型:List<NeighboringCellInfo>
   * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
   */
  tm.getNeighboringCellInfo(); //List<NeighboringCellInfo>
 
  /*
   * 获取ISO标准的国家码,即国际长途区号。
   * 注意:仅当用户已在网络注册后有效。
   *       在CDMA网络中结果也许不可靠。
   */

  tm.getNetworkCountryIso(); //String
 
  /*
   * MCC+MNC(mobile country code + mobile network code)
   * 注意:仅当用户已在网络注册时有效。
   *    在CDMA网络中结果也许不可靠。
   */

  tm.getNetworkOperator(); //String
 
  /*
   * 按照字母次序的current registered operator(当前已注册的用户)的名字
   * 注意:仅当用户已在网络注册时有效。
   *    在CDMA网络中结果也许不可靠。
   */

  tm.getNetworkOperatorName(); //String
 
  /*
   * 当前使用的网络类型:
   * 例如: 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
   * NETWORK_TYPE_HSPA     HSPA网络  10
   * NETWORK_TYPE_CDMA     CDMA网络,IS95A 或 IS95B.  4
   * NETWORK_TYPE_EVDO_0   EVDO网络, revision 0.  5
   * NETWORK_TYPE_EVDO_A   EVDO网络, revision A.  6
   * NETWORK_TYPE_1xRTT    1xRTT网络  7
   */

  tm.getNetworkType(); //int
 
  /*
   * 手机类型:
   * 例如: PHONE_TYPE_NONE  无信号
   * PHONE_TYPE_GSM   GSM信号
   * PHONE_TYPE_CDMA  CDMA信号
   */

  tm.getPhoneType(); //int
 
  /*
   * Returns the ISO country code equivalent for the SIM provider's country code.
   * 获取ISO国家码,相当于提供SIM卡的国家码。
   */

  tm.getSimCountryIso(); //String
 
  /*
   * Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits.
   * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
   * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
   */

  tm.getSimOperator(); //String
 
  /*
   * 服务商名称:
   * 例如:中国移动、联通
   * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
   */

  tm.getSimOperatorName(); //String
 
  /*
   * SIM卡的序列号:
   * 需要权限:READ_PHONE_STATE
   */

  tm.getSimSerialNumber(); //String
 
  /*
   * SIM的状态信息:
   *  SIM_STATE_UNKNOWN             未知状态 0
   *  SIM_STATE_ABSENT                 没插卡 1
   *  SIM_STATE_PIN_REQUIRED     锁定状态,需要用户的PIN码解锁 2
   *  SIM_STATE_PUK_REQUIRED    锁定状态,需要用户的PUK码解锁 3
   *  SIM_STATE_NETWORK_LOCKED   锁定状态,需要网络的PIN码解锁 4
   *  SIM_STATE_READY            就绪状态 5
   */

  tm.getSimState(); //int
 
  /*
   * 唯一的用户ID:
   * 例如:IMSI(国际移动用户识别码) for a GSM phone.
   * 需要权限:READ_PHONE_STATE
   */

  tm.getSubscriberId(); //String
 
  /*
   * 取得和语音邮件相关的标签,即为识别符
   * 需要权限:READ_PHONE_STATE
   */

  tm.getVoiceMailAlphaTag(); //String
 
  /*
   * 获取语音邮件号码:
   * 需要权限:READ_PHONE_STATE
   */

  tm.getVoiceMailNumber(); //String
 
  /*
   * ICC卡是否存在
   */

  tm.hasIccCard(); //boolean
 
  /*
   * 是否漫游:
   * (在GSM用途下)
   */

  tm.isNetworkRoaming(); //
 
}
}
【from http://yansaibo.javaeye.com/blog/728230

分享到:
评论

相关推荐

    Android-获取SIM卡信息Android:基于TelephonyManageriOS基于CoreTelephony

    本文将详细讲解如何在Android系统中利用`TelephonyManager`类以及在iOS系统中利用`CoreTelephony`框架来获取SIM卡的相关信息。 在Android平台上,`TelephonyManager`是Android SDK提供的一种服务,它允许应用程序...

    Android SIM卡号码获取

    在Android系统中,获取SIM卡号码以及运营商标识是移动应用开发中常见的需求,尤其是在涉及到通信功能或者个性化服务时。SIM卡(Subscriber Identity Module)包含了用户的运营商信息和一个唯一的国际移动用户识别码...

    Android 读取SIM卡信息代码(完整工程)

    接着,我们可以通过调用TelephonyManager的相应方法来获取SIM卡信息: 1. 获取SIM卡ID(IMEI): ```java String imei = telephonyManager.getDeviceId(); ``` 2. 获取SIM卡运营商名称: ```java String ...

    Android代码-SIM卡运营商获取手机号码功能暂时无法实现.zip

    - 使用`TelephonyManager`类:在较旧的Android版本中,可以使用`TelephonyManager`来获取SIM卡运营商信息,但无法直接获取手机号码。 ```java TelephonyManager telephonyManager = (TelephonyManager) context....

    Android获取手机SIM卡运营商信息的方法.7z

    首先,Android提供了`TelephonyManager`类,它是与电话功能相关的顶级接口,允许开发者获取到设备的电话状态信息,包括SIM卡信息。要获取`TelephonyManager`实例,我们需要在AndroidManifest.xml中添加权限: ```...

    Android以TelephonyManager取得話機狀態

    总结,`TelephonyManager`是Android系统中处理电话相关功能的核心类,通过它我们可以获取到丰富的手机状态信息,同时也可以监听电话状态变化。在实际开发中,`PhoneState_Project`这样的示例可以帮助我们更好地理解...

    获取SIM卡信息

    本文将详细讲解如何在Android应用中获取SIM卡信息,包括运营商名称、SIM卡ID(IMEI)、SIM序列号(IMSI)等,并简要提及网络状态的获取。 首先,获取SIM卡信息需要在AndroidManifest.xml文件中声明相应的权限。在...

    Android 读取SIM卡参数

    ### Android 读取SIM卡参数 #### 概述 ...综上所述,通过Android提供的`TelephonyManager`类,开发者可以方便地获取SIM卡的相关信息。但在实际应用时,需要注意权限管理以及用户隐私保护的问题。

    Android 读取IMSI 和IMEI号支持双卡双待

    访问IMSI和IMEI通常需要`READ_PHONE_STATE`权限,而获取所有SIM卡信息可能需要更高的权限,如在Android N及以上版本需要`ACCESS_ALL_PHONE_STATE`。同时,获取网络连接状态可能需要`ACCESS_FINE_LOCATION`或`ACCESS_...

    Android高级应用源码-SIM卡运营商(获取手机号码功能暂时无法实现).rar

    Android提供了`TelephonyManager`类,它是与手机通话相关的功能接口,包括获取SIM卡信息。通过`Context.getSystemService(Context.TELEPHONY_SERVICE)`可以获取到`TelephonyManager`的实例,然后使用它的方法来获取...

    Android获取双卡双待手机的信息示例代码

    Android 获取双卡双待手机的 SIM 卡信息示例代码主要给大家介绍了关于 Android 获取双卡双待手机的 SIM 卡信息的相关资料,文中通过示例代码介绍的非常详细,对各位 Android 开发者们具有一定的参考学习价值。...

    android获取sim信息

    Android提供了`TelephonyManager`类,它是与电话相关的功能接口,包括查询SIM卡状态。通过`getSimState()`方法,可以获取SIM卡当前的状态,如`SIM_STATE_UNKNOWN`、`SIM_STATE_ABSENT`、`SIM_STATE_PIN_REQUIRED`、...

    android 获取手机SIM卡唯一值,和号码

    在Android平台上,获取手机SIM卡的唯一值和电话号码是开发者常常需要进行的操作,尤其是在开发与通信相关的应用程序时。然而,随着技术的发展和隐私保护措施的加强,SIM卡的一些信息可能受到限制,使得某些方法不再...

    Android 获取手机SIM资料

    本篇文章将详细解释如何通过Android系统的`TelephonyManager`类来获取手机SIM卡及通信状态的相关信息。 #### TelephonyManager简介 `TelephonyManager`是Android系统提供的一个用于管理电话功能的类,它能够帮助...

    获取SIM卡短信内容

    接下来,我们可以通过`TelephonyManager`类来获取SIM卡信息。`TelephonyManager`是Android提供的用于获取电话状态和服务信息的接口。我们可以调用`getSimMessages()`方法来获取SIM卡中的短信,但需要注意的是,这个...

    安卓串口Socket通讯USB驱动jni相关-Android获取手机sim卡信息包含手机平台运营商等信息.rar

    在Android系统中,获取SIM卡信息是通过与操作系统底层交互来实现的,涉及到的主要知识点包括:Android系统的权限管理、TelephonyManager类、JNI(Java Native Interface)以及可能的串口Socket通讯和USB驱动开发。...

    Android 手机获取手机号实现方法

    首先,Android系统提供了`TelephonyManager`类来获取设备的电话相关信息。通过以下代码片段,我们可以获取到SIM卡的一些基本信息: ```java TelephonyManager tm = (TelephonyManager) this.getSystemService...

    Android高级应用源码-SIM卡运营商(获取手机号码功能暂时无法实现).zip

    在Android中,我们可以使用`TelephonyManager`类来获取与SIM卡相关的信息。`TelephonyManager`是Android提供的一个接口,它提供了访问手机通话状态和设备信息的方法。要获取SIM卡运营商名称,我们可以调用`...

    获取手机SIM卡运营商

    在IT行业中,获取手机SIM卡运营商的信息是一项常见的需求,尤其在移动应用开发、数据分析和位置服务等领域。这个任务涉及到通信网络、操作系统API以及隐私保护等多个方面。以下将详细阐述相关知识点。 首先,SIM卡...

    Android获取通话状态

    `TelephonyManager`可以用来获取设备的IMEI、SIM卡信息以及通话状态等。以下是如何获取`TelephonyManager`实例的代码: ```java TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_...

Global site tag (gtag.js) - Google Analytics