关闭

使用TelephonyManager获取手机相关信息

标签: androidTelephonyManager
1902人阅读 评论(0) 收藏 举报
分类:

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

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

telephonymanager 获取手机的各种信息

/* * 电话状态: * 1.teletphonymanager.CALL_STATE_IDLE=0 无活动 * 2.teletphonymanager...
  • wenldJAVA
  • wenldJAVA
  • 2014-05-21 16:57
  • 610

TelephonyManager获取到手机的一些信息

这是模拟器上的信息: [plain] view plaincopy 01-29 02:42:41.962: V/PhoneInfo(1002): D...
  • huwenzhi1991
  • huwenzhi1991
  • 2015-06-19 14:37
  • 264

TelephonyManager获取手机信息

android中有个类TelephonyManager,可以获取手机中设备的各种信息,具体如下:private TelephonyManager TelephonyMgr;//注意创建的时候最好写在o...
  • liuxudong1001
  • liuxudong1001
  • 2017-06-29 09:53
  • 99

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

关于TelephonyManager的学习,内容是获取手机网络状态和SIM卡信息,和监听手机来电,比较简单。
  • keke921231
  • keke921231
  • 2015-02-05 15:19
  • 935

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

在AndroidManifest.xml文件中增加 代码如下 TelephonyManager telephonyManager = (Tel...
  • rockan007
  • rockan007
  • 2016-06-07 10:19
  • 526

Android如何获取手机各项信息

本文为转载 原文地址:点击打开链接 1、使用Build获取架构属性  下面我们来根据源码看看通过Build这个类可以得到哪些配置信息,具体就不解释了,从命名基本可以理解其代表的属性。 pub...
  • u011791526
  • u011791526
  • 2017-05-04 09:55
  • 962

Android提供的系统服务之--TelephonyManager(电话管理器)

Android提供的系统服务之--TelephonyManager(电话管理器)               转载请注明出处——coder-pig TelephonyMan...
  • u014450015
  • u014450015
  • 2016-01-12 00:12
  • 1123

使用TelephonyManager获取网络和SIM卡信息

TelephonyManager是一个管理手机通话状态、电话网络信息的服务类,该类提供了大量的getXxx()方法来获取电话网络的相关信息。下面通过一个简单实例来获取网络和SIM卡信息,代码如下: ...
  • u010142437
  • u010142437
  • 2013-07-08 14:10
  • 1971

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

在AndroidManifest.xml文件中增加 允许读取电话状态SIM的权限--> 代码如下: private void getSystemPhoneMessage(){ Telephony...
  • yakedar
  • yakedar
  • 2013-09-26 12:23
  • 1718

获取手机的相关信息

转自:http://blog.csdn.net/qeqeqe236/article/details/7412929 Android系统提供了Environment 和StatFs两个类,配合...
  • shi_weihappy
  • shi_weihappy
  • 2014-12-09 11:23
  • 552
    个人资料
    • 访问:1740757次
    • 积分:23442
    • 等级:
    • 排名:第343名
    • 原创:502篇
    • 转载:313篇
    • 译文:99篇
    • 评论:432条
    博客专栏
    最新评论