Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android教程:获取设备的基本服务信息

TelephonyManager提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用程序也可以注册listener来监听电话状态的改变。我们不能对TelephonyManager进行实例化,只能通过如下的形式得到对其实例的引用:Context.getSystemService(Context.TELEPHONY_SERVICE).注意:对手机的某些信息进行读取是需要一定许可(permission)的。可以通过在manifest file中添加一定的许可(permission),以便来对对手机的某些信息进行读取。本文源码下载:免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /pub/Android源码集锦/2011年/12月/Android教程:获取设备的基本服务信息/

先是Java代码
  1. TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);  
  2.         StringBuilder sb = new StringBuilder();  
  3.         sb.append(" DeviceId(IMEI) = " + tm.getDeviceId());  
  4.         sb.append(" DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion());  
  5.         sb.append(" Line1Number = " + tm.getLine1Number());  
  6.         sb.append(" NetworkCountryIso = " + tm.getNetworkCountryIso());  
  7.         sb.append(" NetworkOperator = " + tm.getNetworkOperator());  
  8.         sb.append(" NetworkOperatorName = " + tm.getNetworkOperatorName());  
  9.         sb.append(" NetworkType = " + tm.getNetworkType());  
  10.         sb.append(" PhoneType = " + tm.getPhoneType());  
  11.         sb.append(" SimCountryIso = " + tm.getSimCountryIso());  
  12.         sb.append(" SimOperator = " + tm.getSimOperator());  
  13.         sb.append(" SimOperatorName = " + tm.getSimOperatorName());  
  14.         sb.append(" SimSerialNumber = " + tm.getSimSerialNumber());  
  15.         sb.append(" SimState = " + tm.getSimState());  
  16.         sb.append(" SubscriberId(IMSI) = " + tm.getSubscriberId());  
  17.         sb.append(" VoiceMailNumber = " + tm.getVoiceMailNumber());  
  18.         Log.e("info", sb.toString());   
然后是Manifest.xml中的权限代码
  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
我们把获得的内容信息展示到屏幕上,方便阅览。由于我在家中是用的虚拟机,因此一些信息无法正常显示,先呈上一个虚拟机运行的效果图,实机的会过几天补上。

主要静态成员常量:手机的通话状态:(它们对应PhoneStateListener.LISTEN_CALL_STATE)int  CALL_STATE_IDLE Device call state: No activity.Device call state: No activity. 空闲。没有任何活动。int  CALL_STATE_OFFHOOK Device call state: Off-hook.Device call state: Off-hook. At least one call exists that is dialing, active, or on hold, and no calls are ringing or waiting. 摘机状态。至少有个电话活动。该活动或是拨打(dialing)或是通话,或是 on hold。并且没有电话是ringing or waiting:on hold的意思是暂时挂起。比如在进行通话A的时候,来了个新的电话B,我们暂时挂起通话A,等通话B结束了,才继续进行A的通话。int  CALL_STATE_RINGING Device call state: Ringing.Device call state: Ringing. A new call arrived and is ringing or waiting. In the latter case, another call is already active. 来电。来电,电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。数据连接活动状态(它们对应PhoneStateListener.LISTEN_DATA_ACTIVITY)int  DATA_ACTIVITY_DORMANT Data connection is active, but physical link is downint  DATA_ACTIVITY_IN Data connection activity: Currently receiving IP PPP traffic.int  DATA_ACTIVITY_INOUT Data connection activity: Currently both sending and receiving IP PPP traffic.int  DATA_ACTIVITY_NONE Data connection activity: No traffic.int  DATA_ACTIVITY_OUT Data connection activity: Currently sending IP PPP traffic.数据连接状态(它们对应PhoneStateListener.LISTEN_DATA_CONNECTION_STATE )int  DATA_CONNECTED Data connection state: Connected.int  DATA_CONNECTING Data connection state: Currently setting up a data connection.int  DATA_DISCONNECTED Data connection state: Disconnected.int  DATA_SUSPENDED Data connection state: Suspended.数据传送的网络类型int  NETWORK_TYPE_1xRTT Current network is 1xRTTint  NETWORK_TYPE_CDMA Current network is CDMA: Either IS95A or IS95Bint  NETWORK_TYPE_EDGE Current network is EDGEint  NETWORK_TYPE_EHRPD Current network is eHRPDint  NETWORK_TYPE_EVDO_0 Current network is EVDO revision 0int  NETWORK_TYPE_EVDO_A Current network is EVDO revision Aint  NETWORK_TYPE_EVDO_B Current network is EVDO revision Bint  NETWORK_TYPE_GPRS Current network is GPRSint  NETWORK_TYPE_HSDPA Current network is HSDPAint  NETWORK_TYPE_HSPA Current network is HSPAint  NETWORK_TYPE_HSUPA Current network is HSUPAint  NETWORK_TYPE_IDEN Current network is iDenint  NETWORK_TYPE_LTE Current network is LTEint  NETWORK_TYPE_UMTS Current network is UMTS int  NETWORK_TYPE_UNKNOWN Network type is unknown