name=”android.permission.READ,uses-permission

主干代码:

在AndroidManifest.xml文件被益
<!–允许读取电话状态SIM的权杖–>
<uses-permission
android:name=”android.permission.READ_PHONE_STATE” />
代码如下:
private
void getSystemPhoneMessage(){
 
  TelephonyManager
telephonyManager =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  //手机串号:GSM手机的
IMEI 和 CDMA手机的 MEID.
  String
deviceID = telephonyManager.getDeviceId();
  //手机号(有些手机号不可以赢得,是坐运营商在SIM中平昔不写出手机号)
  String
tel = telephonyManager.getLine1Number();
  //获取手机SIM卡的队号
  String
imei =telephonyManager.getSimSerialNumber();
  //获取客户id,在gsm中凡是imsi号
  String
imsi =telephonyManager.getSubscriberId();
  //电话方位
  CellLocation
str = telephonyManager.getCellLocation();
 
//运营商名称,注意:仅当用户已当网报时有效,在CDMA网络中结果或者不可靠
  String
networkoperatorName = telephonyManager.getNetworkOperatorName();
  //取得和语音邮件相关的价签,即为识别符
  String
voiceMail = telephonyManager.getVoiceMailAlphaTag();
  //获取语音邮件号:
  String
voiceMailNumber = telephonyManager.getVoiceMailNumber();
  //获取ISO国家码,分外给提供SIM卡的国家码。
  String
simCountryIso = telephonyManager.getSimCountryIso();
 
  /**
 
* 电话状态:
 
* 1.tm.CALL_STATE_IDLE=0          无活动
 
* 2.tm.CALL_STATE_RINGING=1  响铃
 
* 3.tm.CALL_STATE_OFFHOOK=2  摘机
 
*/
  int
callState = telephonyManager.getCallState();
 
  /**
 
* 设备的软件版本号:
 
* 例如:the IMEI/SV(software version) for GSM phones.
 
* Return null if the software version is not available.
 
*/
  String
devicesoftware = telephonyManager.getDeviceSoftwareVersion();
 
  /**
 
* 获取ISO标准的国家码,即国际长途区号。
 
* 注意:仅当用户已于网络报后中。
 
*      在CDMA网络被结果也许不可靠。
  */ 
  String
networkCountry = telephonyManager.getNetworkCountryIso();
 
  /**
 
* MCC+MNC(mobile country code + mobile network code)
 
* 注意:仅当用户已当网报时有效。
 
*    在CDMA网络被结果或者不可靠。
 
*/ 
  String
networkoperator = telephonyManager.getNetworkOperator();
 
  /**
 
* 当前利用的纱项目:
 
* 例如: 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 = telephonyManager.getNetworkType();
 
  /**
 
* 手机类型:
 
* 例如: PHONE_TYPE_NONE  无信号
 
      PHONE_TYPE_GSM   GSM信号
 
         PHONE_TYPE_CDMA  CDMA信号
 
*/
  int
phoneType = telephonyManager.getPhoneType();
 
  /**
 
* 获取SIM卡提供的倒国家码和走网码.5或6各项之十进制数字.
 
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
  */
  String
simOperator = telephonyManager.getSimOperator();
 
  /**
 
  * 服务商名称:
 
  * 例如:中国移动、联通
 
  * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
  */
  String
simOperatorName = telephonyManager.getSimOperatorName();
 
  /**
 
* 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
simStat = telephonyManager.getSimState();
 
  /**
 
* ICC卡是否有
 
*/
  boolean
bl= telephonyManager.hasIccCard();
 
   /**
 
* 是否漫游:
 
* (在GSM用途下)
 
*/
  boolean
blean = telephonyManager.isNetworkRoaming();
  /**
 
* 附近的电话机的音信:
 
* 类型:List<NeighboringCellInfo>
 
* 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
  */
  List<NeighboringCellInfo>
list =
telephonyManager.getNeighboringCellInfo();//List<NeighboringCellInfo>
  /**
 
* 获取数据连接状态
 
*/
  int
dataActivty = telephonyManager.getDataActivity();
 
}

Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.getDeviceId();

 

1.出席权限

 

每当manifest.xml文件被假使补充加 <uses-permission
android:name=”android.permission.READ_PHONE_STATE” />

eg:

2.代码

 

  1. /** 
  2. *
  3. *成立日期 2010-4-29 晌午05:02:47 
  4. */   
  5. package net.sunniwell.app;    
  6. import android.app.Activity;    
  7. import android.os.Bundle;    
  8. import
    android.telephony.CellLocation;    
  9. import
    android.telephony.PhoneStateListener;    
  10. import
    android.telephony.TelephonyManager;    
  11. publicclass TelManager extends Activity {    
  12.    
  13. @Override   
  14. protectedvoid onCreate(Bundle savedInstanceState)
    {    
  15.   super.onCreate(savedInstanceState);    
  16.   TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);    
  17.       
  18.   /* 
  19.    * 电话状态: 
  20.    * 1.tm.CALL_STATE_IDLE=0         
    无活动 
  21.    * 2.tm.CALL_STATE_RINGING=1  响铃 

  22.    * 3.tm.CALL_STATE_OFFHOOK=2  摘机 

  23.    */   

  24.   tm.getCallState();//int    
  25.       
  26.   /* 
  27.    * 电话向: 
  28.    *  
  29.    */   
  30.   tm.getCellLocation();//CellLocation  
     
  31.       
  32.   /* 
  33.    * 唯一的装置ID: 
  34.    * GSM手机的 IMEI 和 CDMA手机的 MEID.  

  35.    * Return null if device ID is not
    available. 

  36.    */   
  37.   tm.getDeviceId();//String    
  38.       
  39.   /* 
  40.    * 设备的软件版本号: 
  41.    * 例如:the IMEI/SV(software version) for
    GSM phones. 
  42.    * Return null if the software version is
    not available.  
  43.    */   
  44.   tm.getDeviceSoftwareVersion();//String  
     
  45.       
  46.   /* 
  47.    * 手机号: 
  48.    * GSM手机的 MSISDN. 
  49.    * Return null if it is unavailable.  

  50.    */   

  51.   tm.getLine1Number();//String    
  52.       
  53.   /* 
  54.    * 附近的电话的信: 
  55.    * 类型:List<NeighboringCellInfo>  

  56.    *
    需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES 

  57.    */   

  58.   tm.getNeighboringCellInfo();//List<NeighboringCellInfo>    
  59.       
  60.   /* 
  61.    * 获取ISO标准的国家码,即国际长途区号。 

  62.    * 注意:仅当用户已在网报后行。 

  63.    *       在CDMA网络被结果或者不可靠。 

  64.    */   

  65.   tm.getNetworkCountryIso();//String  
     
  66.       
  67.   /* 
  68.    * MCC+MNC(mobile country code + mobile
    network code) 
  69.    * 注意:仅当用户已于网络报时有效。 

  70.    *    在CDMA网络中结果可能不可靠。 

  71.    */   
  72.   tm.getNetworkOperator();//String    
  73.       
  74.   /* 
  75.    * 遵照字母顺序的current registered
    operator(当前就报的用户)的讳 
  76.    * 注意:仅当用户既于网络报时有效。 

  77.    *    在CDMA网络中结果或者不可靠。 

  78.    */   
  79.   tm.getNetworkOperatorName();//String  
     
  80.       
  81.   /* 
  82.    * 当前采用的网络型: 
  83.    * 例如: NETWORK_TYPE_UNKNOWN 
    网络项目未知  0 
  84.      NETWORK_TYPE_GPRS     GPRS网络  1 

  85.      NETWORK_TYPE_EDGE     EDGE网络  2 

  86.      NETWORK_TYPE_UMTS     UMTS网络  3 

  87.      NETWORK_TYPE_HSDPA    HSDPA网络  8  

  88.      NETWORK_TYPE_HSUPA    HSUPA网络  9 

  89.      NETWORK_TYPE_HSPA     HSPA网络  10 

  90.      NETWORK_TYPE_CDMA     CDMA网络,IS95A 或
    IS95B.  4 

  91.      NETWORK_TYPE_EVDO_0   EVDO网络,
    revision 0.  5 
  92.      NETWORK_TYPE_EVDO_A   EVDO网络,
    revision A.  6 
  93.      NETWORK_TYPE_1xRTT    1xRTT网络  7 

  94.    */   

  95.   tm.getNetworkType();//int    
  96.       
  97.   /* 
  98.    * 手机类型: 
  99.    * 例如: PHONE_TYPE_NONE  无信号 

  100.      PHONE_TYPE_GSM   GSM信号 

  101.      PHONE_TYPE_CDMA  CDMA信号 
  102.    */   
  103.   tm.getPhoneType();//int    
  104.       
  105.   /* 
  106.    * Returns the ISO country code equivalent
    for the SIM provider’s country code. 
  107.    *
    获取ISO国家码,分外给提供SIM卡的国家码。 
  108.    *  
  109.    */   
  110.   tm.getSimCountryIso();//String    
  111.       
  112.   /* 
  113.    * Returns the MCC+MNC (mobile country
    code + mobile network code) of the provider of the SIM. 5 or 6
    decimal digits. 
  114.    *
    获取SIM卡提供的移位国家码和动网码.5或6个的十进制数字. 
  115.    * SIM卡的状态必须是
    SIM_STATE_READY(使用getSimState()判断). 
  116.    */   
  117.   tm.getSimOperator();//String    
  118.       
  119.   /* 
  120.    * 服务商名称: 
  121.    * 例如:中国移动、联通 
  122.    * SIM卡的状态必须是
    SIM_STATE_READY(使用getSimState()判断). 
  123.    */   
  124.   tm.getSimOperatorName();//String    
  125.       
  126.   /* 
  127.    * SIM卡的连串号: 
  128.    * 需要权限:READ_PHONE_STATE 
  129.    */   
  130.   tm.getSimSerialNumber();//String    
  131.       
  132.   /* 
  133.    * SIM的状态信息: 
  134.    *  SIM_STATE_UNKNOWN          未知状态
  135.    SIM_STATE_ABSENT           没插卡 1 

  136.    SIM_STATE_PIN_REQUIRED    
    锁定状态,需要用户之PIN码解锁 2 

  137.    SIM_STATE_PUK_REQUIRED    
    锁定状态,需要用户之PUK码解锁 3 
  138.    SIM_STATE_NETWORK_LOCKED  
    锁定状态,需要网络的PIN码解锁 4 
  139.    SIM_STATE_READY            就绪状态 5 

  140.    */   

  141.   tm.getSimState();//int    
  142.       
  143.   /* 
  144.    * 唯一的用户ID: 
  145.    * 例如:IMSI(国际移动用户识别码) for a
    GSM phone. 
  146.    * 需要权限:READ_PHONE_STATE 
  147.    */   
  148.   tm.getSubscriberId();//String    
  149.       
  150.   /* 
  151.    * 取得和话音邮件相关的价签,即为识别符 

  152.    * 需要权限:READ_PHONE_STATE 

  153.    */   
  154.   tm.getVoiceMailAlphaTag();//String  
     
  155.       
  156.   /* 
  157.    * 获取语音邮件号: 
  158.    * 需要权限:READ_PHONE_STATE 
  159.    */   
  160.   tm.getVoiceMailNumber();//String    
  161.       
  162.   /* 
  163.    * ICC卡是否有 
  164.    */   
  165.   tm.hasIccCard();//boolean    
  166.       
  167.   /* 
  168.    * 是否漫游: 
  169.    * (在GSM用途下) 
  170.    */   
  171.   tm.isNetworkRoaming();//    
  172.       
  173.       
  174.       
  175. }    
  176.    
  177.    
  178. }  
  179. http://blog.csdn.net/gumanren/archive/2011/02/26/6209237.aspx

目录结构

 

图片 1

main.xml布局文件

图片 2图片 3

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView android:fillViewport="true"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ListView android:id="@+id/listView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </ScrollView>
</LinearLayout>

View Code

array.xml文件

图片 4图片 5

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="listItem">            
        <item>设备编号</item>
        <item>SIM卡国别</item>
        <item>SIM卡序列号</item>
        <item>SIM卡状态</item>
        <item>软件版本</item>
        <item>网络运营商代号</item>
        <item>网络运营商名称</item>
        <item>手机制式</item>
        <item>设备当前位置</item>
    </string-array>
    <string-array name="simState">            
        <item>状态未知</item>
        <item>无SIM卡</item>
        <item>被PIN加锁</item>
        <item>被PUK加锁</item>
        <item>被NetWork PIN加锁</item>
        <item>已准备好</item>
    </string-array>
    <string-array name="phoneType">            
        <item>未知</item>
        <item>GSM</item>
        <item>CDMA</item>
    </string-array>    
</resources>

View Code

清单文件

图片 6图片 7

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ljq.activity" android:versionCode="1"
    android:versionName="1.0">
    <application android:icon="@drawable/icon"
        android:label="@string/app_name">
        <activity android:name=".TelephonyManagerActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category
                    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>

View Code

TelephonyManagerActivity类

图片 8图片 9

package com.ljq.activity;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class TelephonyManagerActivity extends Activity {
    private ListView listView=null;
    private TelephonyManager tm=null;
    private String[] phoneType=null;
    private String[] simState=null;
    private String[] listItems=null;
    ArrayList<String> listValues=new ArrayList<String>();
    BaseAdapter adapter=new BaseAdapter(){

        public int getCount() {
            return listItems.length;
        }

        public Object getItem(int position) {
            return listItems[position];
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout ll=new LinearLayout(TelephonyManagerActivity.this);
            ll.setOrientation(LinearLayout.VERTICAL);
            TextView tvItem=new TextView(TelephonyManagerActivity.this);
            tvItem.setTextSize(24);
            tvItem.setText(listItems[position]);
            tvItem.setGravity(Gravity.LEFT);//设置在父容器中的对齐方式
            ll.addView(tvItem);
            TextView tvValue=new TextView(TelephonyManagerActivity.this);
            tvValue.setTextSize(18);                    //设置字体大小
            tvValue.setText(listValues.get(position));    //设置显示的内容
            tvValue.setPadding(0, 0, 10, 10);            //设置四周边界
            tvValue.setGravity(Gravity.RIGHT);    
            ll.addView(tvValue);
            return ll;
        }

    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        listItems=getResources().getStringArray(R.array.listItem);
        simState=getResources().getStringArray(R.array.simState);
        phoneType=getResources().getStringArray(R.array.phoneType);
        tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        listView=(ListView)findViewById(R.id.listView);
        initListValues();
        listView.setAdapter(adapter);
    }

    /**
     * 获取各个数据项的值
     */
    public void initListValues(){            
        listValues.add(tm.getDeviceId());//获取设备编号
        listValues.add(tm.getSimCountryIso());//获取SIM卡国别
        listValues.add(tm.getSimSerialNumber());//获取SIM卡序列号    
        listValues.add(simState[tm.getSimState()]);//获取SIM卡状态
        listValues.add((tm.getDeviceSoftwareVersion()!=null?tm.getDeviceSoftwareVersion():"未知"));    //获取软件版本
        listValues.add(tm.getNetworkOperator());//获取网络运营商代号
        listValues.add(tm.getNetworkOperatorName());//获取网络运营商名称
        listValues.add(phoneType[tm.getPhoneType()]);//获取手机制式
        listValues.add(tm.getCellLocation().toString());//获取设备当前位置
    }
}

View Code

运行结果

图片 10

 

相关文章