使用TelephonyManager获取手机相关信息

转载 2013年12月03日 17:07:13

MainActivity:

package com.home.testtm;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.CellLocation;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
import android.widget.TextView;

import com.home.testtelephonymanager.R;

public class MainActivity extends Activity {
	private TextView showText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		showText=(TextView) findViewById(R.id.main_tv_show);
		getSystemPhoneMessage();
	}

	private void getSystemPhoneMessage() {
		 TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
		  //手机串号:GSM手机的 IMEI 和 CDMA手机的 MEID. 
		  String deviceID =tm.getDeviceId(); 
		  showText.append("deviceID:"+deviceID+"\n");
		  
		  //手机号(有些手机号无法获取,是因为运营商在SIM中没有写入手机号)
		  String tel =tm.getLine1Number(); 
		  showText.append("tel:"+tel+"\n");
		  
		  //获取手机SIM卡的序列号
		  String simSerialNumber =tm.getSimSerialNumber(); 
		  showText.append("simSerialNumber:"+simSerialNumber+"\n");
		  
		  //获取客户id,在gsm中是imsi号
		  String subscriberId=tm.getSubscriberId();
		  showText.append("subscriberId:"+subscriberId+"\n");
		  
		  //电话方位
		  CellLocation cellLocation =tm.getCellLocation(); 
		  showText.append("cellLocation:"+cellLocation+"\n");
		  
		  //运营商名称,注意:仅当用户已在网络注册时有效,在CDMA网络中结果也许不可靠
		  String networkoperatorName = tm.getNetworkOperatorName(); 
		  showText.append("networkoperatorName:"+networkoperatorName+"\n");
		  
		  //取得和语音邮件相关的标签,即为识别符
		  String voiceMail =tm.getVoiceMailAlphaTag(); 
		  showText.append("voiceMail:"+voiceMail+"\n");
		  
		  //获取语音邮件号码:
		  String voiceMailNumber =tm.getVoiceMailNumber();
		  showText.append("voiceMailNumber:"+voiceMailNumber+"\n");
		  
		  //获取ISO国家码,相当于提供SIM卡的国家码。
		  String simCountryIso =tm.getSimCountryIso();
		  showText.append("simCountryIso:"+simCountryIso+"\n");
		  
		  /**
		   * 电话状态:
		   * 1.tm.CALL_STATE_IDLE=0         无活动
		   *2.tm.CALL_STATE_RINGING=1  响铃
		   *3.tm.CALL_STATE_OFFHOOK=2  摘机
		   */
		  int callState =tm.getCallState();
		  showText.append("callState:"+callState+"\n");
		  
		  /**
		   * 设备的软件版本号:
		   * 例如:the IMEI/SV(softwareversion) for GSM phones.
		   * Return null if the software versionis not available. 
		   */
		  String devicesoftware =tm.getDeviceSoftwareVersion();
		  showText.append("devicesoftware:"+devicesoftware+"\n");
		  
		  /**
		   * 获取ISO标准的国家码,即国际长途区号。
		   * 注意:仅当用户已在网络注册后有效。
		   *      在CDMA网络中结果也许不可靠。
		  */  
		  String networkCountry =tm.getNetworkCountryIso();
		  showText.append("networkCountry:"+networkCountry+"\n");
		  
		  /**
		   * MCC+MNC(mobile country code +mobile network code)
		   * 注意:仅当用户已在网络注册时有效。
		   *    在CDMA网络中结果也许不可靠。
		   */  
		  String networkoperator = tm.getNetworkOperator();
		  showText.append("networkoperator:"+networkoperator+"\n");
		  
		  /**
		   * 当前使用的网络类型:
		   * 例如: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
		     */  
		  int netWorkType =tm.getNetworkType();
		  showText.append("netWorkType:"+netWorkType+"\n");
		  
		  /**
		   * 手机类型:
		   * 例如:PHONE_TYPE_NONE  无信号
		       PHONE_TYPE_GSM   GSM信号
		          PHONE_TYPE_CDMA  CDMA信号
		   */
		  int phoneType = tm.getPhoneType();
		  showText.append("phoneType:"+phoneType+"\n");
		  
		  /**
		   * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
		   * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
		  */
		  String simOperator =tm.getSimOperator();
		  showText.append("simOperator:"+simOperator+"\n");
		  
		  /**
		    * 服务商名称:
		    * 例如:中国移动、联通
		    * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
		  */
		  String simOperatorName =tm.getSimOperatorName();
		  showText.append("simOperatorName:"+simOperatorName+"\n");
		  
		  /**
		   * 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
		  */
		  int simState =tm.getSimState();
		  showText.append("simState:"+simState+"\n");
		  
		  /**
		   * ICC卡是否存在
		   */
		  boolean hasIccCard=tm.hasIccCard();
		  showText.append("hasIccCard:"+hasIccCard+"\n");
		  
		     /**
		   * 是否漫游:
		   * (在GSM用途下)
		   */
		  boolean isRoaming =tm.isNetworkRoaming();
		  showText.append("isRoaming:"+isRoaming+"\n");
		  
		  /**
		   * 附近的电话的信息:
		   * 类型:List<NeighboringCellInfo> 
		   * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
		  */
		  List<NeighboringCellInfo> list =tm.getNeighboringCellInfo();		  
		  showText.append("NeighboringCellInfo:"+list+"\n");
		  
		  /**
		   * 获取数据连接状态
		   */
		  int dataActivty =tm.getDataActivity();
		  showText.append("dataActivty:"+dataActivty+"\n");

	}
}

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/main_tv_show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp" />
    </ScrollView>

</LinearLayout>


权限:

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


核心代码转自:http://hi.baidu.com/eajar/item/b7713f0b62c9c4c69157185f

相关文章推荐

安卓使用TelephonyManager(手机电话管理器服务)获取网络和sim卡信息

效果 代码 package com.example.test2.myapplication.service; import android.Manifest; import andr...

android系统中使用TelephonyManager类来获取imei号和其他手机信息

在AndroidManifest.xml文件中增加 android:name="android.permission.READ_PHONE_STATE" /> 代码如下: private...

android系统中使用TelephonyManager类来获取imsi号和其他手机信息

在AndroidManifest.xml文件中增加 代码如下: private void getSystemPhoneMessage(){      TelephonyManage...

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

在AndroidManifest.xml文件中增加 代码如下 TelephonyManager telephonyManager = (Tel...

Android下使用TelephonyManager类获取设备电话相关信息

其实这篇文章只是对TelephonyManager类的方法进行信息打印,方便以后使用时作为参考。 TelephonyManager类相关方法调用结果 1 2 3 4 5...
  • qjbagu
  • qjbagu
  • 2012年04月13日 12:53
  • 407

Android 与手机通讯相关的状态和信息的类 TelephonyManager

Android里获取运行商的类和方法,以及号码段与运营商的对应关系很容易就能搜到,但是状态码比较多一时很难记住,我把搜到的资料归纳整理了一下,至少用到时能快速找到对应的方法与状态,希望这个答案能让你满...

Android中TelephonyManager类来获取imei号和其他手机信息

在AndroidManifest.xml文件中增加 允许读取电话状态SIM的权限--> 代码如下: private void getSystemPhoneMessage(){    ...

telephonymanager 获取手机的各种信息

/* * 电话状态: * 1.teletphonymanager.CALL_STATE_IDLE=0 无活动 * 2.teletphonymanager...

TelephonyManager学习之一,获取网络状态,SIM卡信息和监听手机来电

关于TelephonyManager的学习,内容是获取手机网络状态和SIM卡信息,和监听手机来电,比较简单。...

TelephonyManager获取手机信息

android中有个类TelephonyManager,可以获取手机中设备的各种信息,具体如下:private TelephonyManager TelephonyMgr;//注意创建的时候最好写在o...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用TelephonyManager获取手机相关信息
举报原因:
原因补充:

(最多只允许输入30个字)