Service之TelephonyManager使用

TelephonyManager是一个管理手机通话状态,电话网络信息的服务类。下面简要使用其API
案例: 获取网络和SIM卡的信息(笔者参考疯狂Android讲义一书)
代码如下:
在布局文件中使用ListView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.yu.telephonymanager.MainActivity">
<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/show"></ListView>
</RelativeLayout>

定义一个array数组

<?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>

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

在MainActivity中

package com.yu.telephonymanager;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.ListView;
import android.widget.SimpleAdapter;

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

public class MainActivity extends AppCompatActivity {
    private ListView showView;
    ArrayList<String> statusValues = new ArrayList<>();
    private String[] statusNames;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showView = (ListView) findViewById(R.id.show);
        //TelephonyManager对象
        TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        statusNames = getResources().getStringArray(R.array.statusNames);
        String[] simState = getResources().getStringArray(R.array.simState);
        String[] phoneType = getResources().getStringArray(R.array.phoneType);

        //获取手机设备的编号
        statusValues.add(manager.getDeviceId());
        //获取软件的版本
        statusValues.add(manager.getDeviceSoftwareVersion() != null ? manager.getDeviceSoftwareVersion() : "未知版本");
        //获取网络运营商代号
        statusValues.add(manager.getNetworkOperator());
        //获取网络运营商名称
        statusValues.add(manager.getNetworkOperatorName());
        //获取网络类型
        statusValues.add(phoneType[manager.getPhoneType()]);
        //获取设备所在的位置
        statusValues.add(manager.getCellLocation().toString() != null ? manager.getCellLocation().toString() : "未知位置");
        //获取Sim卡的国别
        statusValues.add(manager.getSimCountryIso());
        //获取sim卡的序列号
        statusValues.add(manager.getSimSerialNumber());
        //获取Sim卡的状态
        statusValues.add(simState[manager.getSimState()]);
        //将数据添加掉ArrayList中
        ArrayList<Map<String, String>> status = new ArrayList<>();
        for (int i = 0; i < statusValues.size(); i++) {
            HashMap<String, String> map = new HashMap<>();
            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);
    }
    }






Line布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="左边"
    android:textSize="18sp"
    android:id="@+id/name"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="右边"
        android:layout_marginLeft="100dp"
        android:textSize="18sp"
        android:id="@+id/value"/>
</LinearLayout>

运行效果
我的手机信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值