转自:http://blog.csdn.net/stevenhu_223/article/details/7860964

/** * 移动数据开启和关闭 *  * @param context * @param enabled */public void setMobileDataStatus(Context context, boolean enabled){ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);// ConnectivityManager类Class<?> conMgrClass = null;// ConnectivityManager类中的字段Field iConMgrField = null;// IConnectivityManager类的引用Object iConMgr = null;// IConnectivityManager类Class<?> iConMgrClass = null;// setMobileDataEnabled方法Method setMobileDataEnabledMethod = null;try {// 取得ConnectivityManager类conMgrClass = Class.forName(conMgr.getClass().getName());// 取得ConnectivityManager类中的对象MserviceiConMgrField = conMgrClass.getDeclaredField("mService");// 设置mService可访问iConMgrField.setAccessible(true);// 取得mService的实例化类IConnectivityManageriConMgr = iConMgrField.get(conMgr);// 取得IConnectivityManager类iConMgrClass = Class.forName(iConMgr.getClass().getName());// 取得IConnectivityManager类中的setMobileDataEnabled(boolean)方法setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);// 设置setMobileDataEnabled方法是否可访问setMobileDataEnabledMethod.setAccessible(true);// 调用setMobileDataEnabled方法setMobileDataEnabledMethod.invoke(iConMgr, enabled);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}  /**  * 获取移动数据开关状态  *   * @param context  * @param getMobileDataEnabled  * @return  */public boolean getMobileDataStatus(Context context,String getMobileDataEnabled){ConnectivityManager cm;cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);Class cmClass = cm.getClass();Class[] argClasses = null;Object[] argObject = null;Boolean isOpen = false;try {Method method = cmClass.getMethod(getMobileDataEnabled, argClasses);isOpen = (Boolean) method.invoke(cm, argObject);} catch (Exception e) {e.printStackTrace();}return isOpen;}


最后,别忘了在AndroidMannifest.xml文件里添加访问权限

通过上面的代码可以知道,当开启移动网络时调用setMobileDataStatus(context,true),关闭调用setMobileDataStatus(context,false),通过getMobileDataStatus(String getMobileDataEnabled)方法返回的布尔值判断当移动数据网络前状态的开启和关闭。

更多相关文章

  1. Android五种隐藏状态栏和标题栏的方法
  2. Android录音时,根据PCM数据获取音量值(单位分贝)
  3. The import com.google cannot be resolved解决方法
  4. 在Android中解析ls 命令得到目录列表的方法
  5. Android 之往通讯录中添加数据和查询数据

随机推荐

  1. android layout的一些注意事项
  2. Android(安卓)ERROR: Unable to resolve
  3. Android开发环境搭建常见问题(不定时更新)
  4. Android手机铃声代码实现
  5. eclipse开发使用recyclerview步骤介绍
  6. Mac下Android(安卓)iperf网络测试
  7. android fragment学习4-底部布局扩展TabL
  8. 细读《深入理解 Android(安卓)内核设计思
  9. Android之系统架构
  10. android如何使webview不跳到自带的浏览器