1. package com.water.activity;
    2. import java.util.List;
    3. import android.app.Activity;
    4. import android.os.Bundle;
    5. import android.telephony.CellLocation;
    6. import android.telephony.NeighboringCellInfo;
    7. import android.telephony.TelephonyManager;
    8. import android.util.Log;
    9. public class MyList extends Activity {
    10. /**
    11. * android API中的TelephonyManager对象,可以取得SIM卡中的信息
    12. */
    13. private TelephonyManager telMgr;
    14. @Override
    15. public void onCreate(Bundle savedInstanceState) {
    16. super.onCreate(savedInstanceState);
    17. setContentView(R.layout.main);
    18. telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    19. if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {
    20. Log.i("MyList", "良好");
    21. } else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {
    22. Log.i("MyList", "无SIM卡");
    23. } else {
    24. Log.i("MyList", "SIM卡被锁定或未知的状态");
    25. }
    26. Log.i("MyList", "电话状态[0 无活动/1 响铃/2 摘机]:" + getCallState());
    27. Log.i("MyList", "电话方位:" + getCellLocation());
    28. Log.i("MyList", "唯一的设备ID:" + getDeviceId());
    29. Log.i("MyList", "设备的软件版本号:" + getDeviceSoftwareVersion());
    30. Log.i("MyList", "手机号:" + getLine1Number());
    31. Log.i("MyList", "附近的电话的信息:" + getNeighboringCellInfo());
    32. Log.i("MyList", "获取ISO标准的国家码,即国际长途区号:" + getNetworkCountryIso());
    33. Log.i("MyList", "MCC+MNC:" + getNetworkOperator());
    34. Log.i("MyList", "(当前已注册的用户)的名字:" + getNetworkOperatorName());
    35. Log.i("MyList", "当前使用的网络类型:" + getNetworkType());
    36. Log.i("MyList", "手机类型:" + getPhoneType());
    37. Log.i("MyList", "SIM卡的国家码:" + getSimCountryIso());
    38. Log.i("MyList", "获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字:" + getSimOperator());
    39. Log.i("MyList", "服务商名称:" + getSimOperatorName());
    40. Log.i("MyList", "SIM卡的序列号:" + getSimSerialNumber());
    41. Log.i("MyList", "SIM的状态信息:" + getSimState());
    42. Log.i("MyList", "唯一的用户ID:" + getSubscriberId());
    43. Log.i("MyList", "取得和语音邮件相关的标签,即为识别符:" + getVoiceMailAlphaTag());
    44. Log.i("MyList", "获取语音邮件号码:" + getVoiceMailNumber());
    45. Log.i("MyList", "ICC卡是否存在:" + hasIccCard());
    46. Log.i("MyList", "是否漫游:" + isNetworkRoaming());
    47. Log.i("MyList", "获取数据活动状态:" + getDataActivity());
    48. Log.i("MyList", "获取数据连接状态:" + getDataState());
    49. // telMgr.listen(PhoneStateListener listener, int events) ;
    50. // 解释:
    51. // IMSI是国际移动用户识别码的简称(International Mobile Subscriber Identity)
    52. // IMSI共有15位,其结构如下:
    53. // MCC+MNC+MIN
    54. // MCC:Mobile Country Code,移动国家码,共3位,中国为460;
    55. // MNC:Mobile NetworkCode,移动网络码,共2位
    56. // 在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03
    57. // 合起来就是(也是Android手机中APN配置文件中的代码):
    58. // 中国移动:46000 46002
    59. // 中国联通:46001
    60. // 中国电信:46003
    61. // 举例,一个典型的IMSI号码为460030912121001
    62. // IMEI是International Mobile Equipment Identity (国际移动设备标识)的简称
    63. // IMEI由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的
    64. // 其组成为:
    65. // 1. 前6位数(TAC)是”型号核准号码”,一般代表机型
    66. // 2. 接着的2位数(FAC)是”最后装配号”,一般代表产地
    67. // 3. 之后的6位数(SNR)是”串号”,一般代表生产顺序号
    68. // 4. 最后1位数(SP)通常是”0″,为检验码,目前暂备用
    69. }
    70. /**
    71. * 电话状态:<br/>
    72. * CALL_STATE_IDLE 无任何状态时<br/>
    73. * CALL_STATE_OFFHOOK 接起电话时<br/>
    74. * CALL_STATE_RINGING 电话进来时
    75. *
    76. * @return
    77. */
    78. private int getCallState() {
    79. return telMgr.getCallState();
    80. }
    81. /**
    82. * 返回当前移动终端的位置 <br/>
    83. *
    84. * @return
    85. */
    86. private CellLocation getCellLocation() {
    87. CellLocation location = telMgr.getCellLocation();
    88. // 请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。
    89. // location.requestLocationUpdate();
    90. return location;
    91. }
    92. /**
    93. * 唯一的设备ID:<br/>
    94. * 如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID<br/>
    95. * 需要权限:android.permission.READ_PHONE_STATE
    96. *
    97. * @return null if device ID is not available.
    98. */
    99. private String getDeviceId() {
    100. return telMgr.getDeviceId();
    101. }
    102. /**
    103. * 返回移动终端的软件版本:<br/>
    104. * 例如:GSM手机的IMEI/SV码。<br/>
    105. *
    106. * @return null if the software version is not available.
    107. */
    108. private String getDeviceSoftwareVersion() {
    109. return telMgr.getDeviceSoftwareVersion();
    110. }
    111. /**
    112. * 手机号:<br/>
    113. * 对于GSM网络来说即MSISDN
    114. *
    115. * @return null if it is unavailable.
    116. */
    117. private String getLine1Number() {
    118. return telMgr.getLine1Number();
    119. }
    120. /**
    121. * 返回当前移动终端附近移动终端的信息:<br/>
    122. * 类型:List<NeighboringCellInfo><br/>
    123. * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
    124. *
    125. * @return
    126. */
    127. private List<NeighboringCellInfo> getNeighboringCellInfo() {
    128. // List<NeighboringCellInfo> infos = telMgr.getNeighboringCellInfo();
    129. // for (NeighboringCellInfo info : infos) {
    130. // // 获取邻居小区号
    131. // int cid = info.getCid();
    132. //
    133. // // 获取邻居小区LAC,LAC:
    134. // // 位置区域码。为了确定移动台的位置,每个GSM/PLMN的覆盖区都被划分成许多位置区,LAC则用于标识不同的位置区。
    135. // info.getLac();
    136. // info.getNetworkType();
    137. // info.getPsc();
    138. //
    139. // // 获取邻居小区信号强度
    140. // info.getRssi();
    141. // }
    142. return telMgr.getNeighboringCellInfo();
    143. }
    144. /**
    145. * 获取ISO标准的国家码,即国际长途区号。<br/>
    146. * 注意:仅当用户已在网络注册后有效。<br/>
    147. * 在CDMA网络中结果也许不可靠。<br/>
    148. *
    149. * @return
    150. */
    151. private String getNetworkCountryIso() {
    152. return telMgr.getNetworkCountryIso();
    153. }
    154. /**
    155. * MCC+MNC(mobile country code + mobile network code)<br/>
    156. * 注意:仅当用户已在网络注册时有效。<br/>
    157. * 在CDMA网络中结果也许不可靠。<br/>
    158. *
    159. * @return
    160. */
    161. private String getNetworkOperator() {
    162. return telMgr.getNetworkOperator();
    163. }
    164. /**
    165. * 按照字母次序的current registered operator(当前已注册的用户)的名字<br/>
    166. * 注意:仅当用户已在网络注册时有效。<br/>
    167. * 在CDMA网络中结果也许不可靠。
    168. *
    169. * @return
    170. */
    171. private String getNetworkOperatorName() {
    172. return telMgr.getNetworkOperatorName();
    173. }
    174. /**
    175. * 当前使用的网络类型:<br/>
    176. * NETWORK_TYPE_UNKNOWN 网络类型未知 0<br/>
    177. * NETWORK_TYPE_GPRS GPRS网络 1<br/>
    178. * NETWORK_TYPE_EDGE EDGE网络 2<br/>
    179. * NETWORK_TYPE_UMTS UMTS网络 3<br/>
    180. * NETWORK_TYPE_HSDPA HSDPA网络 8<br/>
    181. * NETWORK_TYPE_HSUPA HSUPA网络 9<br/>
    182. * NETWORK_TYPE_HSPA HSPA网络 10<br/>
    183. * NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4<br/>
    184. * NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5<br/>
    185. * NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6<br/>
    186. * NETWORK_TYPE_1xRTT 1xRTT网络 7<br/>
    187. * 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO<br/>
    188. *
    189. * @return
    190. */
    191. private int getNetworkType() {
    192. return telMgr.getNetworkType();
    193. }
    194. /**
    195. * 返回移动终端的类型:<br/>
    196. * PHONE_TYPE_CDMA 手机制式为CDMA,电信<br/>
    197. * PHONE_TYPE_GSM 手机制式为GSM,移动和联通<br/>
    198. * PHONE_TYPE_NONE 手机制式未知<br/>
    199. *
    200. * @return
    201. */
    202. private int getPhoneType() {
    203. return telMgr.getPhoneType();
    204. }
    205. /**
    206. * 获取ISO国家码,相当于提供SIM卡的国家码。
    207. *
    208. * @return Returns the ISO country code equivalent for the SIM provider's
    209. *         country code.
    210. */
    211. private String getSimCountryIso() {
    212. return telMgr.getSimCountryIso();
    213. }
    214. /**
    215. * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.<br/>
    216. * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
    217. *
    218. * @return Returns the MCC+MNC (mobile country code + mobile network code)
    219. *         of the provider of the SIM. 5 or 6 decimal digits.
    220. */
    221. private String getSimOperator() {
    222. return telMgr.getSimOperator();
    223. }
    224. /**
    225. * 服务商名称:<br/>
    226. * 例如:中国移动、联通<br/>
    227. * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
    228. *
    229. * @return
    230. */
    231. private String getSimOperatorName() {
    232. return telMgr.getSimOperatorName();
    233. }
    234. /**
    235. * SIM卡的序列号:<br/>
    236. * 需要权限:READ_PHONE_STATE
    237. *
    238. * @return
    239. */
    240. private String getSimSerialNumber() {
    241. return telMgr.getSimSerialNumber();
    242. }
    243. /**
    244. * SIM的状态信息:<br/>
    245. * SIM_STATE_UNKNOWN 未知状态 0<br/>
    246. * SIM_STATE_ABSENT 没插卡 1<br/>
    247. * SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2<br/>
    248. * SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3<br/>
    249. * SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4<br/>
    250. * SIM_STATE_READY 就绪状态 5
    251. *
    252. * @return
    253. */
    254. private int getSimState() {
    255. return telMgr.getSimState();
    256. }
    257. /**
    258. * 唯一的用户ID:<br/>
    259. * 例如:IMSI(国际移动用户识别码) for a GSM phone.<br/>
    260. * 需要权限:READ_PHONE_STATE
    261. *
    262. * @return
    263. */
    264. private String getSubscriberId() {
    265. return telMgr.getSubscriberId();
    266. }
    267. /**
    268. * 取得和语音邮件相关的标签,即为识别符<br/>
    269. * 需要权限:READ_PHONE_STATE
    270. *
    271. * @return
    272. */
    273. private String getVoiceMailAlphaTag() {
    274. return telMgr.getVoiceMailAlphaTag();
    275. }
    276. /**
    277. * 获取语音邮件号码:<br/>
    278. * 需要权限:READ_PHONE_STATE
    279. *
    280. * @return
    281. */
    282. private String getVoiceMailNumber() {
    283. return telMgr.getVoiceMailNumber();
    284. }
    285. /**
    286. * ICC卡是否存在
    287. *
    288. * @return
    289. */
    290. private boolean hasIccCard() {
    291. return telMgr.hasIccCard();
    292. }
    293. /**
    294. * 是否漫游:(在GSM用途下)
    295. *
    296. * @return
    297. */
    298. private boolean isNetworkRoaming() {
    299. return telMgr.isNetworkRoaming();
    300. }
    301. /**
    302. * 获取数据活动状态<br/>
    303. * DATA_ACTIVITY_IN 数据连接状态:活动,正在接受数据<br/>
    304. * DATA_ACTIVITY_OUT 数据连接状态:活动,正在发送数据<br/>
    305. * DATA_ACTIVITY_INOUT 数据连接状态:活动,正在接受和发送数据<br/>
    306. * DATA_ACTIVITY_NONE 数据连接状态:活动,但无数据发送和接受<br/>
    307. *
    308. * @return
    309. */
    310. private int getDataActivity() {
    311. return telMgr.getDataActivity();
    312. }
    313. /**
    314. * 获取数据连接状态<br/>
    315. * DATA_CONNECTED 数据连接状态:已连接<br/>
    316. * DATA_CONNECTING 数据连接状态:正在连接<br/>
    317. * DATA_DISCONNECTED 数据连接状态:断开<br/>
    318. * DATA_SUSPENDED 数据连接状态:暂停<br/>
    319. *
    320. * @return
    321. */
    322. private int getDataState() {
    323. return telMgr.getDataState();
    324. }
    325. }

Android 读取SIM卡参数的更多相关文章

  1. MTK Android 读取SIM卡参数,获取sim卡运营商信息

    android 获取sim卡运营商信息(转)   TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TE ...

  2. android 读取sd卡中的图片

    一.获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限  -->    <uses-permission android:name="android.perm ...

  3. Android获取SIM卡信息--TelephonyManager

    1>获得TelephonyManager  TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SER ...

  4. DelphiXE5如何获取Android手机SIM卡串号[转]

    手机号不是存在SIM卡上的,SIM卡只有一个串号.在运营商的服务器上有手机号和序号对应的一张表.所以你SIM卡办理遗失,运营商只要把新SIM卡的串号和你原来的手机号绑定即可. 获取手机号的唯一办法是收 ...

  5. Android 判断SIM卡属于哪个移动运营商

    第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServic ...

  6. android 读取SD卡文件

    SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件.因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android ...

  7. Android读取sd卡

    public static String[] getStoragePaths() { List<String> pathsList = new ArrayList<String> ...

  8. android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...

  9. 十九、android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...

随机推荐

  1. [原]Unity3D深入浅出 - 认识开发环境中的Layers面板

    Layers(分层)下拉列表:用来控制Scene视图中游戏对象的显示,在下拉菜单中为勾选状态的物体将显示在Scene视图中. Everything:显示所有的游戏对象 Nothing:不显示任何游戏对 ...

  2. Entity Framework 增删改查和事务操作

    1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...

  3. poj2686-Traveling by Stagecoach(状压dp)

    题意: n张马票,m个城市,马票上有马数(决定速度),一张只能用一次,给出地图,求从城市a到b的最短时间. 分析:n值很小状态压缩 #include <map> #include < ...

  4. POJ 1151 Atlantis 线段树+离散化+扫描线

    这次是求矩形面积并 /* Problem: 1151 User: 96655 Memory: 716K Time: 0MS Language: G++ Result: Accepted */ #inc ...

  5. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (二) 图片验证码的识别

    上一篇文章讲了“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 一 京东 商品搜索 ...

  6. PHP 安全检测代码片段

    /** * html转换输出(只转义' " 保留Html正常运行) * @param $param * @return string */ function htmlEscape($para ...

  7. Linux Oracle碰到错误:ORA-27101: shared memory realm does not exist

    从ITPUB上摘抄并已验证 1.实例没有启动 sqlplus /nologconnect / as sysdbastartup

  8. Windows内核编程之:分页内存与非分页内存 #define PAGEDCODE code_seg("PAGE") (转)

    原文链接:http://blog.chinaunix.net/uid-24504987-id-161192.html Windows规定有些虚拟内存可以交换到文件中,这类内存被称为分页内存 有些虚拟内 ...

  9. python join和split和strip用法

    python join 和 split方法的使用,join用来连接字符串,split恰好相反,拆分字符串的. strip()为去除开头结尾指定的字符,空着时是去除空白字符\t,\n,\r意思 1.jo ...

  10. POJ 2429

    思路:a/n*b/n=lcm/gcd 所以这道题就是分解ans.dfs枚举每种素数情况.套Miller_Rabin和pollard_rho模板 //#pragma comment(linker, &q ...