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 MainActivity extends Activity {
  ListView showView;
  //声明代表状态名的数组
  String[] statusName;
  //声明代表手机状态的集合
  ArrayList<String> statusValues = new ArrayList<String>();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //获取系统的TelephonyManager对象
    TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    //获取各种状态名称的数组
    statusName = getResources().getStringArray(android.R.array.statusNames);
    //获取代表SIM卡状态的数组
    String[] simState = getResources().getStringArray(android.R.array.simState);
    //获取代表电话网络类型的数组
    String[] phoneType = getResources().getStringArray(android.R.array.phoneTypes);
    //获取设备编号
    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(tManager.getSimSerialNumber());
    //获取SIM卡状态
    statusValues.add(simState[tManager.getSimState()]);
    //获取ListView对象
    showView = (ListView) findViewById(R.id.showView);
    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", statusName[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);
  }

}

利用电话管理器TelephonyManager获取网络和SIM卡信息的更多相关文章

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

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx()方法来获取电话网络的相关信息.这些信息包括设备编号.软件版本.网络运营商代号.网络运营商名 ...

  2. Android TelephonyManager电话管理器

    今天介绍一下Android的电话管理器--TelephonyManager,TelephonyManager管理手机通话状态.电话网络信息的服务类,获取TelephonyManager: Teleph ...

  3. Android提供的系统服务之--TelephonyManager(电话管理器)

    Android提供的系统服务之--TelephonyManager(电话管理器) 转载请注明出处--coder-pig TelephonyManager的作用: 用于管理手机通话状态,获取电话信息(设 ...

  4. android学习笔记57——电话管理器TelephoneyManager

    电话管理器TelephoneyManager

  5. 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

    今天写ASP.NET程序,在网页后台的c#代码里写了个事务,事务内部对一张表进行批量插入,对另外一张表进行查询与批量插入. 结果第二张表查询后foreach迭代操作时报错:已禁用对分布式事务管理器(M ...

  6. python中利用上下文管理器来实现mysql数据库的封装

    from pymysql import connect class DB(object): def __init__(self, password, database): # 1.连接数据库 self ...

  7. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  8. iphone获取sim卡信息

    /* iphone获取sim卡信息 1.加入一个Framework(CoreTelephony.framework). 2.引入头文件 #import <CoreTelephony/CTTele ...

  9. ios开发获取SIM卡信息

    .加入一个Framework(CoreTelephony.framework). .引入头文件 #import<CoreTelephony/CoreTelephonyDefines.h> ...

随机推荐

  1. HDU5845 Best Division

    递归写法,好久不写很容易就gg了... dp[i]=max(dp[j])+1,并且s[i]XORs[j]<=x  01字典树优化一下转移. #include <bits/stdc++.h& ...

  2. Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc) (转载)

    [转](转)Linux内核访问外设I/O资源的方式-静态映射(map_desc)方式 Linux内核访问外设I/O资源的方式 Author: Dongas Date: 08-08-02 我们知道默认外 ...

  3. Class create, device create, device create file (转)

    来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file 开始写Linux设备驱动程序的时候,很多时 ...

  4. poj3384Feng Shui(半平面交)

    链接 将边长向内推进r,明显这样把第一个圆的圆心放在新的边长是肯定是最优的,与原本边相切,然后再找新多边上的最远的两点即为两圆心. #include <iostream> #include ...

  5. 搭建Mono for Android开发环境(用离线版)

    上面为我现在的离线版的安装包内容(不知道为什么上传的图名字显示不出来,郁闷),这些文件可以到http://pan.baidu.com/s/1ntM8U4T这里去下载: 安装步骤如下: 1)jdk-6u ...

  6. django的安装和搭建

    一.先下载pyton,配置下python的环境变量,这个很重要,然后下载django,解压到与python同一个根目录底下,进入django目录,运行python setup.py install安装 ...

  7. 实现jQuery扩展总结

    开发自己需要的jQuery插件,看个示例说明<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&qu ...

  8. 对于syncedmen类的代码分析

    对于数据在cpu与GPU之间同步的问题,caffe中用syncedMemory这个类来解 决:在GPU模式下,并且使用CUDA时,可以用CaffeMallocHost函数与CaffeFreeHost函 ...

  9. hdu4418(概率dp + 高斯消元)

    应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...

  10. python语法笔记(一)

    1. python中多个函数或者类定义可以放在一个.py 文件中,视为一个模块.模块的.py文件中,一般要写 if __name__ == '__mian__' 用来单独执行该模块内的某些函数. 2. ...