歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android GPRS的自動打開與關閉

Android GPRS的自動打開與關閉

日期:2017/3/1 10:23:05   编辑:Linux編程

本例中需要的權限:

<uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

工程源碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/5月/8日/Android GPRS的自動打開與關閉/

本例子中的GPRS打開與關閉是自動的, 不會出現系統那個手動GPRS設置界面。

Android中GPRS的打開和關閉比較難搞, 因為它沒有專門的方法提供給你。 GPRS打開與關閉的方法都在framework, 所以我們要調用framework裡的方法來操作GPRS開關。

需要調用的方法:

1. getMobileDataEnabled 檢查GPRS是否開啟

2. setMobileDataEnabled 設置GPRS開關

首先我們需要聲明一個網絡鏈接相關操作類

  1. private ConnectivityManager mCM;

在初始化中實例化

  1. mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

接下來用到了三個自定義的方法

gprsIsOpenMethod 是從framework中取得getMobileDataEnabled這個方法, 主要用來檢測GPRS是否打開

setGprsEnabled 取得setMobileDataEnabled方法, 用來打開或關閉GPRS

在這裡我們只要調用grpsEnabled即可。

  1. //打開或關閉GPRS
  2. private boolean gprsEnabled(boolean bEnable)
  3. {
  4. Object[] argObjects = null;
  5. boolean isOpen = gprsIsOpenMethod("getMobileDataEnabled");
  6. if(isOpen == !bEnable)
  7. {
  8. setGprsEnable("setMobileDataEnabled", bEnable);
  9. }
  10. return isOpen;
  11. }
  12. //檢測GPRS是否打開
  13. private boolean gprsIsOpenMethod(String methodName)
  14. {
  15. Class cmClass = mCM.getClass();
  16. Class[] argClasses = null;
  17. Object[] argObject = null;
  18. Boolean isOpen = false;
  19. try
  20. {
  21. Method method = cmClass.getMethod(methodName, argClasses);
  22. isOpen = (Boolean) method.invoke(mCM, argObject);
  23. } catch (Exception e)
  24. {
  25. e.printStackTrace();
  26. }
  27. return isOpen;
  28. }
  29. //開啟/關閉GPRS
  30. private void setGprsEnabled(String methodName, boolean isEnable)
  31. {
  32. Class cmClass = mCM.getClass();
  33. Class[] argClasses = new Class[1];
  34. argClasses[0] = boolean.class;
  35. try
  36. {
  37. Method method = cmClass.getMethod(methodName, argClasses);
  38. method.invoke(mCM, isEnable);
  39. } catch (Exception e)
  40. {
  41. e.printStackTrace();
  42. }
  43. }

Class.getMethod 是從framework搜索指定的方法, 返回的Method就可以使用該方法, 第二個參數是該方法的參數類型。

Method.invoke 使用從framework裡搜索到的方法, 第二個是參數。

Copyright © Linux教程網 All Rights Reserved