1. packagecom.water.activity;
  2. importjava.util.List;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.telephony.CellLocation;
  6. importandroid.telephony.NeighboringCellInfo;
  7. importandroid.telephony.TelephonyManager;
  8. importandroid.util.Log;
  9. publicclassMyListextendsActivity{
  10. /**
  11. *androidAPI中的TelephonyManager对象,可以取得SIM卡中的信息
  12. */
  13. privateTelephonyManagertelMgr;
  14. @Override
  15. publicvoidonCreate(BundlesavedInstanceState){
  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. }elseif(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(PhoneStateListenerlistener,intevents);
  50. //解释:
  51. //IMSI是国际移动用户识别码的简称(InternationalMobileSubscriberIdentity)
  52. //IMSI共有15位,其结构如下:
  53. //MCC+MNC+MIN
  54. //MCC:MobileCountryCode,移动国家码,共3位,中国为460;
  55. //MNC:MobileNetworkCode,移动网络码,共2位
  56. //在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03
  57. //合起来就是(也是Android手机中APN配置文件中的代码):
  58. //中国移动:4600046002
  59. //中国联通:46001
  60. //中国电信:46003
  61. //举例,一个典型的IMSI号码为460030912121001
  62. //IMEI是InternationalMobileEquipmentIdentity(国际移动设备标识)的简称
  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. privateintgetCallState(){
  79. returntelMgr.getCallState();
  80. }
  81. /**
  82. *返回当前移动终端的位置<br/>
  83. *
  84. *@return
  85. */
  86. privateCellLocationgetCellLocation(){
  87. CellLocationlocation=telMgr.getCellLocation();
  88. //请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。
  89. //location.requestLocationUpdate();
  90. returnlocation;
  91. }
  92. /**
  93. *唯一的设备ID:<br/>
  94. *如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID<br/>
  95. *需要权限:android.permission.READ_PHONE_STATE
  96. *
  97. *@returnnullifdeviceIDisnotavailable.
  98. */
  99. privateStringgetDeviceId(){
  100. returntelMgr.getDeviceId();
  101. }
  102. /**
  103. *返回移动终端的软件版本:<br/>
  104. *例如:GSM手机的IMEI/SV码。<br/>
  105. *
  106. *@returnnullifthesoftwareversionisnotavailable.
  107. */
  108. privateStringgetDeviceSoftwareVersion(){
  109. returntelMgr.getDeviceSoftwareVersion();
  110. }
  111. /**
  112. *手机号:<br/>
  113. *对于GSM网络来说即MSISDN
  114. *
  115. *@returnnullifitisunavailable.
  116. */
  117. privateStringgetLine1Number(){
  118. returntelMgr.getLine1Number();
  119. }
  120. /**
  121. *返回当前移动终端附近移动终端的信息:<br/>
  122. *类型:List<NeighboringCellInfo><br/>
  123. *需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
  124. *
  125. *@return
  126. */
  127. privateList<NeighboringCellInfo>getNeighboringCellInfo(){
  128. //List<NeighboringCellInfo>infos=telMgr.getNeighboringCellInfo();
  129. //for(NeighboringCellInfoinfo:infos){
  130. ////获取邻居小区号
  131. //intcid=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. returntelMgr.getNeighboringCellInfo();
  143. }
  144. /**
  145. *获取ISO标准的国家码,即国际长途区号。<br/>
  146. *注意:仅当用户已在网络注册后有效。<br/>
  147. *在CDMA网络中结果也许不可靠。<br/>
  148. *
  149. *@return
  150. */
  151. privateStringgetNetworkCountryIso(){
  152. returntelMgr.getNetworkCountryIso();
  153. }
  154. /**
  155. *MCC+MNC(mobilecountrycode+mobilenetworkcode)<br/>
  156. *注意:仅当用户已在网络注册时有效。<br/>
  157. *在CDMA网络中结果也许不可靠。<br/>
  158. *
  159. *@return
  160. */
  161. privateStringgetNetworkOperator(){
  162. returntelMgr.getNetworkOperator();
  163. }
  164. /**
  165. *按照字母次序的currentregisteredoperator(当前已注册的用户)的名字<br/>
  166. *注意:仅当用户已在网络注册时有效。<br/>
  167. *在CDMA网络中结果也许不可靠。
  168. *
  169. *@return
  170. */
  171. privateStringgetNetworkOperatorName(){
  172. returntelMgr.getNetworkOperatorName();
  173. }
  174. /**
  175. *当前使用的网络类型:<br/>
  176. *NETWORK_TYPE_UNKNOWN网络类型未知0<br/>
  177. *NETWORK_TYPE_GPRSGPRS网络1<br/>
  178. *NETWORK_TYPE_EDGEEDGE网络2<br/>
  179. *NETWORK_TYPE_UMTSUMTS网络3<br/>
  180. *NETWORK_TYPE_HSDPAHSDPA网络8<br/>
  181. *NETWORK_TYPE_HSUPAHSUPA网络9<br/>
  182. *NETWORK_TYPE_HSPAHSPA网络10<br/>
  183. *NETWORK_TYPE_CDMACDMA网络,IS95A或IS95B.4<br/>
  184. *NETWORK_TYPE_EVDO_0EVDO网络,revision0.5<br/>
  185. *NETWORK_TYPE_EVDO_AEVDO网络,revisionA.6<br/>
  186. *NETWORK_TYPE_1xRTT1xRTT网络7<br/>
  187. *在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO<br/>
  188. *
  189. *@return
  190. */
  191. privateintgetNetworkType(){
  192. returntelMgr.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. privateintgetPhoneType(){
  203. returntelMgr.getPhoneType();
  204. }
  205. /**
  206. *获取ISO国家码,相当于提供SIM卡的国家码。
  207. *
  208. *@returnReturnstheISOcountrycodeequivalentfortheSIMprovider's
  209. *countrycode.
  210. */
  211. privateStringgetSimCountryIso(){
  212. returntelMgr.getSimCountryIso();
  213. }
  214. /**
  215. *获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.<br/>
  216. *SIM卡的状态必须是SIM_STATE_READY(使用getSimState()判断).
  217. *
  218. *@returnReturnstheMCC+MNC(mobilecountrycode+mobilenetworkcode)
  219. *oftheprovideroftheSIM.5or6decimaldigits.
  220. */
  221. privateStringgetSimOperator(){
  222. returntelMgr.getSimOperator();
  223. }
  224. /**
  225. *服务商名称:<br/>
  226. *例如:中国移动、联通<br/>
  227. *SIM卡的状态必须是SIM_STATE_READY(使用getSimState()判断).
  228. *
  229. *@return
  230. */
  231. privateStringgetSimOperatorName(){
  232. returntelMgr.getSimOperatorName();
  233. }
  234. /**
  235. *SIM卡的序列号:<br/>
  236. *需要权限:READ_PHONE_STATE
  237. *
  238. *@return
  239. */
  240. privateStringgetSimSerialNumber(){
  241. returntelMgr.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. privateintgetSimState(){
  255. returntelMgr.getSimState();
  256. }
  257. /**
  258. *唯一的用户ID:<br/>
  259. *例如:IMSI(国际移动用户识别码)foraGSMphone.<br/>
  260. *需要权限:READ_PHONE_STATE
  261. *
  262. *@return
  263. */
  264. privateStringgetSubscriberId(){
  265. returntelMgr.getSubscriberId();
  266. }
  267. /**
  268. *取得和语音邮件相关的标签,即为识别符<br/>
  269. *需要权限:READ_PHONE_STATE
  270. *
  271. *@return
  272. */
  273. privateStringgetVoiceMailAlphaTag(){
  274. returntelMgr.getVoiceMailAlphaTag();
  275. }
  276. /**
  277. *获取语音邮件号码:<br/>
  278. *需要权限:READ_PHONE_STATE
  279. *
  280. *@return
  281. */
  282. privateStringgetVoiceMailNumber(){
  283. returntelMgr.getVoiceMailNumber();
  284. }
  285. /**
  286. *ICC卡是否存在
  287. *
  288. *@return
  289. */
  290. privatebooleanhasIccCard(){
  291. returntelMgr.hasIccCard();
  292. }
  293. /**
  294. *是否漫游:(在GSM用途下)
  295. *
  296. *@return
  297. */
  298. privatebooleanisNetworkRoaming(){
  299. returntelMgr.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. privateintgetDataActivity(){
  311. returntelMgr.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. privateintgetDataState(){
  323. returntelMgr.getDataState();
  324. }
  325. }

更多相关文章

  1. android中gridView中点击 item为选中状态
  2. Android(安卓)ImageView显示网络图片
  3. android 获取手机设备信息
  4. Android(安卓)SDK自带教程之BluetoothChat
  5. android 实时检测网络状态
  6. android gps开发必备资料(含测试demo下载)
  7. android:configChanges
  8. android 把图片状态由彩色变成灰色
  9. android监听手机网络连接状态改变的后台服务

随机推荐

  1. 谷歌官方流海适配方案
  2. Android音频相关(一)插入耳机后调节音量(安
  3. 从原理上粗略认知Android线程池(ThreadPoo
  4. 外部应用跳转到 其他activity, 或本应用启
  5. 从魅族腰圆键看国产手机厂商的创新能力
  6. android root权限破解分析
  7. 我的从Android交易市场一天赚到250美元的
  8. Androd 添加新键值
  9. 我理解的 iOS 与 Android(安卓)的区别
  10. Android中数据库常见操作实例分析