• Android菜鸟的成长笔记(23)——获取网络和SIM卡信息


    TelephonyManager是一个管理手机通话状态、电话网络信息的服务类,该类提供了大量的getXxx()方法来获取电话网络的相关信息。这些信息包括设备编号、软件版本、网络运营商代号、网络运营商名称、手机制式、设备当前位置、SIM卡的国别、SIM卡序列号等。

    下面来实际看一下:

    MainActivity.java

    package com.example.telephonymanager;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.telephony.TelephonyManager;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity 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() : "未知位置" );
    		
    		//获取SIM卡的国别
    		statusValues.add(tManager.getSimCountryIso());
    		
    		//获取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 });
    		// 为ListView设置Adapter
    		showView.setAdapter(adapter);
    	}
    }
    

    main.xml

    <?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"
    	>
    <ListView 
    	android:id="@+id/show"
    	android:layout_width="fill_parent" 
    	android:layout_height="fill_parent" 
    	android:entries="@array/statusNames"
    	/>
    </LinearLayout>
    

    line.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="horizontal"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	>
    <TextView 
    	android:id="@+id/name"
    	android:layout_width="wrap_content" 
    	android:layout_height="wrap_content"
    	android:width="120px"
    	android:textSize="16dip"
    	/>
    <TextView 
    	android:id="@+id/value"
    	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content" 
    	android:paddingLeft="8px"
    	android:textSize="16dip"
    	/>	
    </LinearLayout>
    

    arry.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>

    运行结果



  • 相关阅读:
    2019年中国高校计算机大赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    2019年(第12届)中国大学生计算机设计大赛
    2020移动开发竞赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    Android 开发者指南
    Android :HangUp Notification 横幅通知
    HBU E-mobile
    Android Q is Android 10
    Android Studio 3.5(Last updated 7/29/2019)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469440.html
Copyright © 2020-2023  润新知