Android GPRS的自动打开与关闭

来源:互联网 发布:小甲鱼python电子书 编辑:程序博客网 时间:2024/04/27 15:19

 

本例中需要的权限:

  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  2. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

本例子中的GPRS打开与关闭是自动的, 不会出现系统那个手动GPRS设置界面。
Android中GPRS的打开和关闭比较难搞, 因为它没有专门的方法提供给你。 GPRS打开与关闭的方法都在framework, 所以我们要调用framework里的方法来操作GPRS开关。
需要调用的方法:
1. getMobileDataEnabled 检查GPRS是否开启
2. setMobileDataEnabled 设置GPRS开关
首先我们需要声明一个网络链接相关操作类
[java]
private ConnectivityManager mCM;

在初始化中实例化
[java]
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里搜索到的方法, 第二个是参数。

原创粉丝点击