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. Javascript&Html-系统对话框

    Javascript&Html-系统对话框 浏览器通常内置三种对话框,他们分别是 alert(),confirm()以及prompt() .这三种对话框的外形跟页面的HTML以及CSS均没有任 ...

  2. 从头开始写项目Makefile(十):make内嵌函数及make命令显示【转】

    转自:http://blog.csdn.net/shallnet/article/details/38314473#comments 版权声明:本文为博主原创文章,未经博主允许不得转载.如果您觉得文章 ...

  3. UnionFind(PYthon实现)

    UnionFind用于解决图的连通性问题,不需要给出具体路径的情况,可用来计算连通分支数 参考链接: https://blog.csdn.net/dm_vincent/article/details/ ...

  4. Codeforces Round #466 (Div. 2) A. Points on the line[数轴上有n个点,问最少去掉多少个点才能使剩下的点的最大距离为不超过k。]

    A. Points on the line time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. HDU——最大连续子序列(区间DP)

    上一个题的加强版! 最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. JSP-Servlet-SpringMVC

    作者:码思客链接:https://zhuanlan.zhihu.com/p/37612412来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本篇文章,我们来讲讲技术,系 ...

  7. springBoot 整合 mybatis+Oracle

    现在比较流行的操作数据库操作层框架Mybatis,下面我们就来看看Springboot如何整合mybatis, 之前一直在用xml形式写sql,这次依然用xml的方式感觉这种还是比较灵活方便. 添加m ...

  8. 【IntelliJ IDEA】1.安装使用IntelliJ IDEA

    IntelliJ IDEA,初次接触,被赞许的收费版IDE环境. =================================================================== ...

  9. 人生中的那口井 z

    有两个和尚住在隔壁,每天都会在同一时间下山去溪边挑水,不知不觉己经过了五年. 突然有一天,左边这座山的和尚没有下山挑水,过了一个星期,还是没有下山挑水. 直到过了一个月,右边那座山的和尚很担心就去探望 ...

  10. 在html里网页中嵌入优酷的视频

    <html> <embed src="http://player.youku.com/player.php/sid/XMjAzOTk4NjI4/v.swf" qu ...