[Android开发]Android 获取电信网络(一)

TelephonyManager与android.provider.Settings.System的应用

       我们在前面的范例当中,已经示范过如何通过TelephonyManager(android.telephony. TelephonyManager)对象来取得SIM卡状态及相关信息,除了SIM卡信息外,TelephonyManager还可以用来取得电信网络的相关信息。例如,电信网络国别、电信公司代码、电信公司名称、网络类型等,甚至还可以取得每部手机唯一的IMEI码与IMSI码。
       除此之外,如果要取得手机内的设置值,如蓝牙、无线网络的设置状态,还可以通过Android API提供的android.provider.Settings.System对象来取得。

       本范例将示范如何运用TelephonyManager取得目前的电信网络相关信息,以及如何运用android.provider.Settings.System来取得手机的相关信息与设置。

效果图


       程序中以getSystemService(TELEPHONY_SERVICE)来取得TelephonyManager对象,再通过TelephonyManager提供的方法来取得电信网络相关信息。

       另外,程序以android.provider.Settings.System.getString()来取得手机相关设置信息,并将取得的信息存入自定义的MyAdapter中,最后以setListAdapter()将MyAdapter内的信息显示在ListView中。

Java代码:
  1. import android.content.ContentResolver;
  2. import android.telephony.TelephonyManager;

  3. public class EX05_24 extends ListActivity {
  4. private TelephonyManager telMgr;
  5. private List<String> item=new ArrayList<String>();
  6. private List<String> value=new ArrayList<String>();
  7. @SuppressWarnings("static-access")
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. /* 加载main.xml Layout */
  12. setContentView(R.layout.main);
  13. telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
  14. /* 将取得的信息写入List中 */
  15. /* 取得手机电话号码 */
  16. item.add(getResources().getText(R.string.str_list0).toString());
  17. if(telMgr.getLine1Number()!=null) {
  18. value.add(telMgr.getLine1Number());
  19. } else {
  20. value.add("无法取得");
  21. }
  22. /* 取得电信网络国别 */
  23. item.add(getResources().getText(R.string.str_list1).toString());
  24. if(telMgr.getNetworkCountryIso().equals("")) {
  25. value.add("无法取得");
  26. } else {
  27. value.add(""+telMgr.getNetworkCountryIso());
  28. }
  29. /* 取得电信公司代码 */
  30. item.add(getResources().getText(R.string.str_list2).toString());
  31. if(telMgr.getNetworkOperator().equals("")) {
  32. value.add("无法取得");
  33. } else {
  34. value.add(telMgr.getNetworkOperator());
  35. }
  36. /* 取得电信公司名称 */
  37. item.add(getResources().getText(R.string.str_list3).toString());
  38. if(telMgr.getNetworkOperatorName().equals("")) {
  39. value.add("无法取得");
  40. } else {
  41. value.add(telMgr.getNetworkOperatorName());
  42. }
  43. /* 取得移动通信类型 */
  44. item.add(getResources().getText(R.string.str_list4).toString());
  45. if(telMgr.getPhoneType()==telMgr.PHONE_TYPE_GSM) {
  46. value.add("GSM");
  47. } else {
  48. value.add("未知");
  49. }
  50. /* 取得网络类型 */
  51. item.add(getResources().getText(R.string.str_list5).toString());
  52. if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_EDGE) {
  53. value.add("EDGE");
  54. } else if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_GPRS) {
  55. value.add("GPRS");
  56. } else if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_UMTS) {
  57. value.add("UMTS");
  58. } else if(telMgr.getNetworkType()==4) {
  59. value.add("HSDPA");
  60. } else { value.add("未知");
  61. }
  62. /* 取得漫游状态 */
  63. item.add(getResources().getText(R.string.str_list6).toString());
  64. if(telMgr.isNetworkRoaming()) {
  65. value.add("漫游中");
  66. } else{
  67. value.add("无漫游");
  68. }
  69. /* 取得手机IMEI */
  70. item.add(getResources().getText(R.string.str_list7).toString());
  71. value.add(telMgr.getDeviceId());
  72. /* 取得IMEI SV */
  73. item.add(getResources().getText(R.string.str_list8).toString());
  74. if(telMgr.getDeviceSoftwareVersion()!=null) {
  75. value.add(telMgr.getDeviceSoftwareVersion());
  76. } else {
  77. value.add("无法取得");
  78. }
  79. /* 取得手机IMSI */
  80. item.add(getResources().getText(R.string.str_list9).toString());
  81. if(telMgr.getSubscriberId()!=null) {
  82. value.add(telMgr.getSubscriberId());
  83. } else {
  84. value.add("无法取得");
  85. }
  86. /* 取得ContentResolver */
  87. ContentResolver cv = EX05_24.this.getContentResolver();
  88. String tmpS="";
  89. /* 取得蓝牙状态 */
  90. item.add(getResources().getText(R.string.str_list10) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.BLUETOOTH_ON);
  91. if(tmpS.equals("1")) {
  92. value.add("已打开");
  93. } else{
  94. value.add("未打开");
  95. }
  96. /* 取得WIFI状态 */
  97. item.add(getResources().getText(R.string.str_list11) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.WIFI_ON); if(tmpS.equals("1")) {
  98. value.add("已打开");
  99. } else{
  100. value.add("未打开");
  101. }
  102. /* 取得飞行模式是否打开 */
  103. item.add(getResources().getText(R.string.str_list12) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.AIRPLANE_MODE_ON);
  104. if(tmpS.equals("1")) {
  105. value.add("打开中");
  106. } else{
  107. value.add("未打开");
  108. }
  109. /* 取得数据漫游是否打开 */
  110. item.add(getResources().getText(R.string.str_list13) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.DATA_ROAMING);
  111. if(tmpS.equals("1")) {
  112. value.add("打开中");
  113. } else{
  114. value.add("未打开");
  115. }
  116. /* 使用自定义的MyAdapter来将数据传入ListActivity */
  117. setListAdapter(new MyAdapter(this,item,value));
  118. }

  119. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值