Android TelephonyManager类的使用
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类的使用的更多相关文章
- Android之TelephonyManager类的方法详解
TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...
- Android之TelephonyManager类的使用案例
TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...
- android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别
android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...
- Android图像格式类及图像转换方法
Android图像格式类及图像转换方法介绍 一款软件的开发和图像密切相关,特别是移动应用程序,在视觉效果等方面是至关重要的,因为这直接关系到用户的体验效果.在Android程序开发的过程中,了解存在哪 ...
- Android 服务类Service 的详细学习
http://blog.csdn.net/vipzjyno1/article/details/26004831 Android服务类Service学习四大组建 目录(?)[+] 什么是服务 服务有 ...
- 项目源码--Android答题类游戏源码
下载源码 技术要点: 1. 精致的答题UI 2. Android的Http通信技术 3. Android数据库QLITE与其他数据存储技术 4. Android在线音乐背景技术 5. Android答 ...
- android application类的用法
android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...
- Android Matrix类以及ColorMatri
引自:http://www.chinabaike.com/t/37396/2014/0624/2556217.html Android Matrix类以及ColorMatrix类详解 最近在系统学习了 ...
- android资讯类软件框架《IT蓝豹》
android资讯类软件框架 android资讯类软件框架,支持侧滑,并且首页viewpager切换tab,tab滑动到最右侧的时候提示滑动结束, 滑动到最左侧的时候切换滑动侧滑menu.左滑和侧滑处 ...
随机推荐
- 解决ie8下页面刚出现时候的晃动问题
出现这个问题的原因的页面的高度超过一屏,这个时候需要在开始的时候给 html,body {overflow:scroll;overflow-x:hidden}; 这样就可以解决这个问题了
- 【12】react 之 redux(1)
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- SQL触发器的使用及语法
原文发布时间为:2010-08-07 -- 来源于本人的百度文章 [由搬家工具导入] ===以下转qsfwy.javaeye.com/blog/424789定义: 何为触发器?在SQL Server里 ...
- 【转载】SQL Server XML Path
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- iOS地图多个自定义大头针绘制核心代码
首先需要自定义一个包含经纬度,title,subtitle的数据模型 #import <Foundation/Foundation.h> #import <MapKit/MapKit ...
- 【IDEA】(3)---非常实用提高开发效率和水平的插件
IDEA(3)-Mac中IDEA插件 IDEA提供了许多很实用的插件,能够大大提高开发效率和开发水平,这里列举几个很实用的插件. 说明:这边的IDEA是MAC系统. 一.插件管理界面简介 1.界面位置 ...
- luogu P1314 聪明的质监员
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- Akka之Actor生命周期
我们首先来看一下官方给出的Actor的声明周期的图: 在上图中,Actor系统中的路径代表一个地方,其可能会被活着的Actor占据.最初路径都是空的.在调用actorOf()时,将会为指定的路径分配根 ...
- Office 2016 安装你所必须要注意的事项
坑主要是,Office 2016专业增强不能自定义安装路径,不能选择需要安装的产品组件(不能取消outlook, onenote等垃圾组件). 软件的下载可以在百度上搜索,cn_office_prof ...
- angular使用canvas操作时报错
最近,用 angular 前端框架为应用登录新增图形验证码认证,由于没有现成的插件,于是便使用canvas+js操作,也是可以正常使用,但是在编译阶段却有个报错: ERROR in src/app/l ...