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. BZOJ 3910: 火车

    3910: 火车 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 358  Solved: 130[Submit][Status][Discuss] D ...

  2. VS2008 没办法太强大了

    原文发布时间为:2009-06-13 -- 来源于本人的百度文章 [由搬家工具导入] VS2008 太强大了。。。继续学习。。。。现在微软的某些强大功能也是针对 VS2008了。。。所以。。必须得装上 ...

  3. 乌班图中的ssh服务

    SSH服务(TCP端口号22):安全的命令解释器                                     为客户机提供安全的Shell 环境,用于远程管理                ...

  4. [LeetCode] Path Sum II 深度搜索

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  5. Manjaro Linux下使用powerline

    作为linux的重度使用者,vim和bash的使用也非常平凡,总想有点不同,感觉千篇一律的提示符已经看的厌倦了.作为广大网友的推荐的powerline可以为bash和vim的提示符美化增色不少.下面请 ...

  6. shell文本过滤编程(一):grep和正则表达式【转】

    转自:http://blog.csdn.net/shallnet/article/details/38799739 版权声明:本文为博主原创文章,未经博主允许不得转载.如果您觉得文章对您有用,请点击文 ...

  7. awk 使用方法

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  8. 已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数

    #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 100010 /* 已知一个序 ...

  9. 给定n个数字,问能否使这些数字相加得到h【折半查找/DFS】

    A Math game Time Limit: 2000/1000MS (Java/Others) Memory Limit: 256000/128000KB (Java/Others) Submit ...

  10. TopCoder SRM 660 Div2 Problem 1000 Powerit (积性函数)

    令$f(x) = x^{2^{k}-1}$,我们可以在$O(k)$的时间内求出$f(x)$. 如果对$1$到$n$都跑一遍这个求解过程,时间复杂度$O(kn)$,在规定时间内无法通过. 所以需要优化. ...