本例中需要的权限:

<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://download.csdn.net/detail/knowheart/4283058

本例子中的GPRS打开与关闭是自动的, 不会出现系统那个手动GPRS设置界面。

Android中GPRS的打开和关闭比较难搞, 因为它没有专门的方法提供给你。 GPRS打开与关闭的方法都在framework, 所以我们要调用framework里的方法来操作GPRS开关。

需要调用的方法:

1. getMobileDataEnabled 检查GPRS是否开启

2. setMobileDataEnabled 设置GPRS开关

首先我们需要声明一个网络链接相关操作类

  private ConnectivityManager mCM;


在初始化中实例化

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


接下来用到了三个自定义的方法

gprsIsOpenMethod 是从framework中取得getMobileDataEnabled这个方法, 主要用来检测GPRS是否打开

setGprsEnabled 取得setMobileDataEnabled方法, 用来打开或关闭GPRS

在这里我们只要调用grpsEnabled即可。

//打开或关闭GPRSprivate boolean gprsEnabled(boolean bEnable){Object[] argObjects = null;boolean isOpen = gprsIsOpenMethod("getMobileDataEnabled");if(isOpen == !bEnable){setGprsEnable("setMobileDataEnabled", bEnable);}return isOpen;}//检测GPRS是否打开private boolean gprsIsOpenMethod(String methodName){Class cmClass = mCM.getClass();Class[] argClasses = null;Object[] argObject = null;Boolean isOpen = false;try{Method method = cmClass.getMethod(methodName, argClasses);isOpen = (Boolean) method.invoke(mCM, argObject);} catch (Exception e){e.printStackTrace();}return isOpen;}//开启/关闭GPRSprivate void setGprsEnabled(String methodName, boolean isEnable){Class cmClass = mCM.getClass();Class[] argClasses = new Class[1];argClasses[0] = boolean.class;try{Method method = cmClass.getMethod(methodName, argClasses);method.invoke(mCM, isEnable);} catch (Exception e){e.printStackTrace();}}

Class.getMethod 是从framework搜索指定的方法, 返回的Method就可以使用该方法, 第二个参数是该方法的参数类型。

Method.invoke 使用从framework里搜索到的方法, 第二个是参数。

工程源码下载: http://download.csdn.net/detail/knowheart/4283058

更多相关文章

  1. Android(安卓)中Dialog点击空白处會消失问题
  2. ANDROID 后台服务 service
  3. Android(安卓)Studio中获取sha1证书指纹数据的方法
  4. Android(安卓)使用ORMLite打造万能泛型Dao简化数据持久化层
  5. Android中Alarm的机制
  6. 获取调试版SHA1和发布版SHA1的方法
  7. android默认焦点设置的方法
  8. android动态加载Jar/dex--原创
  9. 你需要了解下Android(安卓)View的更新 requestLayout 与重绘 inv

随机推荐

  1. Docker compose 配置 Snipe IT 练习
  2. C语言数据存储
  3. js的增删查改的DOM操作
  4. 2021-04-07:给定一个非负数组arr,长度为N,那
  5. 苹果iPhone 12 Pro丢了或被偷了怎么定位
  6. 【js效果】下拉菜单
  7. 史上最全最新微信小程序自动化教程
  8. 20210221-2 软件管理与网络管理
  9. 【js效果】屏蔽鼠标右键
  10. 支付宝支付--沙箱支付教程+案例 | PC端网