TelephonyManager-get SIM card and network status


TelephonyManager 是一个管理手机通话状态,电话网络信息的服务类,该类提供了大量的getXxx()方法来获取电话网络的相关信息

TelephonyManager tManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);


实例: 获取网络和SIM card信息

---------Main.xml-----

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
        android:id="@+id/show"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:entries="@array/statusNames"
        />


</LinearLayout>

----TelephonyStatus.java----

package com.example.telephonystatus;

import java.util.ArrayList;




import java.util.HashMap;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class TelephonyStatus extends Activity {

	ListView showView;
	//声明代表状态名的数组
	String[] statusNames;
	//声明代表手机状态的集合
	ArrayList<String> statusValues=new ArrayList<String>();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//获取系统的TelephonyManager对象
		TelephonyManager tManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
		//获取各种状态名称的数组
		statusNames=getResources().getStringArray(R.array.statusNames);
		//获取代表sim卡状态的数组
		String[] simState=getResources().getStringArray(R.array.simState);
		//获取代表电话网络类型的数组
		String[] phoneType=getResources().getStringArray(R.array.phoneType);
		//获取设备编号
		statusValues.add(tManager.getDeviceId());
		statusValues.add(tManager.getDeviceSoftwareVersion()!=null? tManager.getDeviceSoftwareVersion(): "未知");
		statusValues.add(tManager.getNetworkOperator());
		statusValues.add(tManager.getNetworkOperatorName());
		statusValues.add(phoneType[tManager.getPhoneType()]);
		//获取设备所在位置
		statusValues.add(tManager.getCellLocation()!=null? tManager.getCellLocation().toString():"未知位置");
		statusValues.add(tManager.getSimCountryIso());
		statusValues.add(tManager.getSimSerialNumber());
		//获取SIM卡状态
		statusValues.add(simState[tManager.getSimState()]);
		//获得listView对象
		showView=(ListView)findViewById(R.id.show);
		ArrayList<Map<String,String>> status=new ArrayList<Map<String,String>>();
		//遍历statusValues集合,把StatusNames,statusValues 的数据封装到List<Map<String,String>>集合中
		for (int i=0;i<statusValues.size();i++)
		{
			HashMap<String,String> map=new HashMap<String,String>();
			map.put("name", statusNames[i]);
			map.put("value", statusValues.get(i));
			status.add(map);
			
		}
		//使用SimpleAdapter封装List数据
		SimpleAdapter adapter=new SimpleAdapter(this,status,
				R.layout.line,new String[]{"name","value"},
				new int[]{R.id.name,R.id.value});
		
		showView.setAdapter(adapter);
		
	}



}

-----array.xml----

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

----AndroidManifest.xml----

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.telephonystatus"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
	<!-- 添加访问手机状态的权限 -->
	<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.telephonystatus.TelephonyStatus"
            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>
    	<!-- 添加访问手机位置的权限 -->


</manifest>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值