android_基础学习(TelephonyManager)_1获取网络和sim卡信息

四部曲:

1,Demo_telephonymanagerActivity:(程序的入口activity)

public class Demo_telephonymanagerActivity extends Activity
{
    /** Called when the activity is first created. */
    
    ListView showView;
    
    //状态名数组
    String[] statusNames;
    
    //手机状态的集合
    ArrayList<String> statusValues = new ArrayList<String>();
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //获取系统的TelePhoneyManager
        TelephonyManager phoneManger = (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(phoneManger.getDeviceId());
        //系统平台版本
        statusValues.add(phoneManger.getDeviceSoftwareVersion() != null ? phoneManger.getDeviceSoftwareVersion()
                : "未知");
        //网路运营商代号
        statusValues.add(phoneManger.getNetworkOperator());
        // 获取手机网络类型
        statusValues.add(phoneType[phoneManger.getPhoneType()]);
        //网路运营商名称
        statusValues.add(phoneManger.getNetworkOperatorName());
        
        //获取设备所在位置
        statusValues.add(phoneManger.getCellLocation() != null ? phoneManger.getCellLocation()
                .toString()
                : "未知位置");
        
        //获取SIM可的国别
        statusValues.add(phoneManger.getSimCountryIso());
        
        //获取sim卡的序列号
        statusValues.add(phoneManger.getSimSerialNumber());
        
        //获取sim卡的状态
        statusValues.add(simState[phoneManger.getSimState()]);
        
        showView = (ListView) findViewById(R.id.listview);
        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 });
        // 为ListView设置Adapter
        showView.setAdapter(adapter);
        
    }
    
}

 

2,main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

3,array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 声明一个名为statusNames的字符串数组 -->
    <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>

4,在AndroidManidfest.xml文件中添加权限,不加会报错;没有权限

<!--   添加访问手机位置的权限 
 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 
- 
<!--   添加访问手机状态的权限 
 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

 

结果:(这是模拟器上面的额结果)

posted @ 2012-07-19 14:55  pengqinping  阅读(558)  评论(0编辑  收藏  举报