您的位置:首页 > 其它

Service之TelephonyManager使用

2016-04-09 12:52 399 查看
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>


运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: