TelephonyManager类主要提供了一系列获取手机与通讯相关的状态和信息的get方法,包含手机用户的信息、手机SIM的状态、电信网络的状态等。

TelephonyManager类的对象的获取:

TelephonyManager tm=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

在开发的时候不要忘记了在配置文件里为其加入相应的权限哦

<!--同意读取电话状态SIM的权限-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

以下简单列出TelephonyManager类的一些方法

package com.xiaolijuan.getphoneinfo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
import android.widget.TextView; import java.util.List; public class MainActivity extends Activity {
private TelephonyManager tm = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /**
* 获取当前设备的位置
*/
tm.getCellLocation().toString(); /**
* 获取数据连接状态
*
* DATA_CONNECTED 数据连接状态:已连接
* DATA_CONNECTING 数据连接状态:正在连接
* DATA_DISCONNECTED 数据连接状态:断开
* DATA_SUSPENDED 数据连接状态:暂停
*/
tm.getDataState(); /**
* 返回唯一的设备ID
* 假设是GSM网络。返回IMEI;假设是CDMA网络。返回MEID;假设设备ID是不可用的返回null
*/
tm.getDeviceId(); /**
* 返回设备的软件版本号号
* 比如:GSM手机的IMEI/SV码。假设软件版本号是返回null。假设不可用返回null
*/
tm.getDeviceSoftwareVersion(); /**
* 返回手机号码
* 对于GSM网络来说即MSISDN,假设不可用返回null
*/
tm.getLine1Number(); /**
* 返回当前设备附近设备的信息
*/
List<NeighboringCellInfo> infos = tm.getNeighboringCellInfo();
for (NeighboringCellInfo info : infos) {
//获取邻居小区号
int cid = info.getCid();
//获取邻居小区LAC,LAC: 位置栏码。 为了确定移动台的位置,每一个GSM/PLMN的覆盖区都被划分成很多位置区,LAC则用于标识不同的位置区。
info.getLac();
info.getNetworkType();
info.getPsc();
//获取邻居小区信号强度
info.getRssi();
} /**
* 返回ISO标准的国家码,即国际长途区号
*/
tm.getNetworkCountryIso(); /**
* 返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)
*/
tm.getNetworkOperator(); /**
* 返回移动网络运营商的名字(SPN)
*/
tm.getNetworkOperatorName(); /**
* 获取网络类型
*
* NETWORK_TYPE_CDMA 网络类型为CDMA
* NETWORK_TYPE_EDGE 网络类型为EDGE
* NETWORK_TYPE_EVDO_0 网络类型为EVDO0
* NETWORK_TYPE_EVDO_A 网络类型为EVDOA
* NETWORK_TYPE_GPRS 网络类型为GPRS
* NETWORK_TYPE_HSDPA 网络类型为HSDPA
* NETWORK_TYPE_HSPA 网络类型为HSPA
* NETWORK_TYPE_HSUPA 网络类型为HSUPA
* NETWORK_TYPE_UMTS 网络类型为UMTS
*
* 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA。电信的3G为EVDO
*/
tm.getNetworkType(); /**
* 返回设备的类型
*
* PHONE_TYPE_CDMA 手机制式为CDMA,电信
* PHONE_TYPE_GSM 手机制式为GSM,移动和联通
* PHONE_TYPE_NONE 手机制式未知
*/
tm.getPhoneType(); /**
* 返回SIM卡提供商的国家代码
*/
tm.getSimCountryIso(); /**
* 返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)
*/
tm.getSimOperator(); /**
* 返回服务提供者的名称(SPN)
*/
tm.getSimOperatorName(); /**
* 返回SIM卡的序列号(IMEI),假设是返回null为不可用。
*/
tm.getSimSerialNumber(); /**
* 返回一个常数表示默认的SIM卡的状态。
*
* SIM_STATE_ABSENT SIM卡未找到
* SIM_STATE_NETWORK_LOCKED SIM卡网络被锁定,须要Network PIN解锁
* SIM_STATE_PIN_REQUIRED SIM卡PIN被锁定,须要User PIN解锁
* SIM_STATE_PUK_REQUIRED SIM卡PUK被锁定。须要User PUK解锁
* SIM_STATE_READY SIM卡可用
* SIM_STATE_UNKNOWN SIM卡未知
*/
tm.getSimState(); /**
* 返回唯一的用户ID,比如,IMSI为GSM手机。 */
tm.getSubscriberId(); /**
* 获取语音信箱号码关联的字母标识
*/
tm.getVoiceMailAlphaTag(); /**
* 返回语音邮件号码
*/
tm.getVoiceMailNumber(); /**
* 返回手机是否处于漫游状态
*/
tm.isNetworkRoaming(); ((TextView) findViewById(R.id.tv_info)).setText(getInfo());
} public String getInfo() {
String info = "获取设备编号: " + tm.getDeviceId();
info += "\n获取SIM卡提供商的国家代码: " + tm.getSimCountryIso();
info += "\n获取SIM卡序列号: " + tm.getSimSerialNumber();
info += "\n获取网络运营商代号: " + tm.getNetworkOperator();
info += "\n获取网络运营商名称: " + tm.getNetworkOperatorName();
info += "\n获取设备当前位置: " + tm.getCellLocation();
info += "\n获取手机类型: " + tm.getPhoneType();
info += "\n手机号码: " + tm.getLine1Number();
info += "\n国际长途区号: " + tm.getNetworkCountryIso();
info += "\n获取网络类型: " + tm.getNetworkType();
info += "\n获取数据连接状态: " + tm.getDataState();
return info;
}
}

以下一些解释:

(1)IMSI是国际移动用户识别码的简称(International Mobile Subscriber Identity)

IMSI共同拥有15位。其结构例如以下:

MCC+MNC+MIN

MCC:Mobile Country Code。移动国家码,共3位,中国为460;

MNC:Mobile NetworkCode。移动网络码。共2位

在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03

合起来就是(也是Android手机中APN配置文件里的代码):

中国移动:46000 46002

中国联通:46001

中国电信:46003

(2)IMEI是International Mobile Equipment Identity (国际移动设备标识)的简称

IMEI由15位数字组成的”电子串号”,它与每台手机一一相应。并且该码是全世界唯一的

其组成为:

1. 前6位数(TAC)是”型号核准号码”,一般代表机型

2. 接着的2位数(FAC)是”最后装配号”。一般代表产地

3. 之后的6位数(SNR)是”串号”。一般代表生产顺序号

4. 最后1位数(SP)一般是”0″,为检验码。眼下暂备用

參考:http://www.cnblogs.com/linjiqin/archive/2011/02/26/1965682.html

Android TelephonyManager类的使用的更多相关文章

  1. Android之TelephonyManager类的方法详解

    TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...

  2. Android之TelephonyManager类的使用案例

    TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...

  3. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

  4. Android图像格式类及图像转换方法

    Android图像格式类及图像转换方法介绍 一款软件的开发和图像密切相关,特别是移动应用程序,在视觉效果等方面是至关重要的,因为这直接关系到用户的体验效果.在Android程序开发的过程中,了解存在哪 ...

  5. Android 服务类Service 的详细学习

    http://blog.csdn.net/vipzjyno1/article/details/26004831 Android服务类Service学习四大组建   目录(?)[+] 什么是服务 服务有 ...

  6. 项目源码--Android答题类游戏源码

    下载源码 技术要点: 1. 精致的答题UI 2. Android的Http通信技术 3. Android数据库QLITE与其他数据存储技术 4. Android在线音乐背景技术 5. Android答 ...

  7. android application类的用法

    android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...

  8. Android Matrix类以及ColorMatri

    引自:http://www.chinabaike.com/t/37396/2014/0624/2556217.html Android Matrix类以及ColorMatrix类详解 最近在系统学习了 ...

  9. android资讯类软件框架《IT蓝豹》

    android资讯类软件框架 android资讯类软件框架,支持侧滑,并且首页viewpager切换tab,tab滑动到最右侧的时候提示滑动结束, 滑动到最左侧的时候切换滑动侧滑menu.左滑和侧滑处 ...

随机推荐

  1. id_rsa id_rsa.pub

    id_rsa  私钥 id_rsa.pub  公钥 https://blog.csdn.net/qq_36663951/article/details/78749217 https://blog.cs ...

  2. python(5)-- 函数

    python 函数  定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.  使用好处:函数能提高应用的模块性,和代码的重复利用率. 分类:(1)python 内建函数:pytho ...

  3. 问题:viewController不会调用dealloc()不会销毁

    问题 在调试程序时,我从ViewController A push进 ViewController B,在从B back时发现程序不会执行B里面的dealloc(),很诡异的问题,因为按理说此时点击b ...

  4. Repeater控件实现一行显示多条数据 Asp.net

    原文发布时间为:2009-05-11 -- 来源于本人的百度文章 [由搬家工具导入]        asp.net中Repeater控件可以很方便显示数据库的数据,使用传统的Table来布局,只能实现 ...

  5. Docker(七):仓库

    登录 可以通过执行docker login命令来输入用户名和密码,密码和邮箱来完成注册和登录.注册成功之后,本地用户目录的.dockerfig中将保存用户的认证信息. 使用$sudo docker s ...

  6. Educational Codeforces Round 37 A B C D E F

    A. water the garden Code #include <bits/stdc++.h> #define maxn 210 using namespace std; typede ...

  7. 关于platform_device和platform_driver的匹配【转】

    转自:http://blog.csdn.net/dfysy/article/details/5959451 版权声明:本文为博主原创文章,未经博主允许不得转载. 说句老实话,我不太喜欢现在Linux ...

  8. manjaro中okular中的pdf文件无法显示中文

    最近发现Manjaro下用Okular打开含有中文的PDF文档时,许多地方显示空白, 开始怀疑是中文字体问题,但是其他的软件中文显示都是正常的. 接着,调整Okular中的中文字体,显示还是不正常. ...

  9. Python 多核 多线程 调度

    参考: http://www.oschina.net/translate/pythons-hardest-problem https://news.ycombinator.com/item?id=58 ...

  10. sublime text3中成功使用bootstrap3

    在视图这里卡了挺久的,一直是自己在研究.其实自己有一个坏毛病,遇到问题,在网上搜集下找不到便寻求帮助(大多数是求助无效果,因为自己也没搞懂), 这时候自己就会懈怠一会,然后隔一两天心血起伏后便又继续干 ...