Android 代码控制手机数据网络的开关

文章目录

          • android 5.0以前
          • 5.0以后
          • Code

android 5.0以前

Android 5.0以前使用ConnectivityManager通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关。

5.0以后

Android 5.0以后使用TelephonyMananger类通过反射获取setDataEnabled和getDataEnabled类完成操作。
注意:Manifest需要使用添加android:sharedUserId=”android.uid.system“,系统需要root或者应用需要系统签名

Code

添加权限

android.permission.MODIFY_PHONE_STATE 权限限制已经改为系统权限

//适应Android5.0+

    /**     * 打开/关闭数据流量     * @param enabled     */    public static void setDataEnabled(boolean enabled){        TelephonyManager telephonyManager = (TelephonyManager) Utils.getContext().getSystemService(Context.TELEPHONY_SERVICE);        try {             Method method = telephonyManager.getClass().getDeclaredMethod("setDataEnabled",boolean.class);             if (method != null){                 method.invoke(telephonyManager,enabled);             }        } catch (NoSuchMethodException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }    }    /**     * true if mobile data is enabled     * @return     */    public static boolean isDataEnabled(){        TelephonyManager telephonyManager = (TelephonyManager) Utils.getContext().getSystemService(Context.TELEPHONY_SERVICE);        try {//            Method method = telephonyManager.getClass().getDeclaredMethod("isDataEnabled");            Method method = telephonyManager.getClass().getDeclaredMethod("getDataEnabled");            if (method != null){              return (boolean) method.invoke(telephonyManager);            }        } catch (NoSuchMethodException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }        return false;    }

Note:经过系统签名的app已经证明在android 5.0上可用

参考:Android 通过代码实现控制数据网络的开关(仅适用于5.0以上)

Android中使用代码控制Wifi及数据连接网络开关

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. 在win7下搭建Android开发环碰到的两个问题
  3. Android(安卓)如何用HttpClient 以Get方式获取数据并添加http头
  4. Android(安卓)Parcel实现反向Binder通信
  5. android中的数据存储 收藏
  6. android 系统重启关机 方法 非常好的一篇文章
  7. Android(安卓)Framework下StageFright框架流程解读
  8. Android游戏设计中的音频控制——音量调整
  9. Android(安卓)Fragment与Fragment之间数据获取

随机推荐

  1. Android(安卓)adt 初步理解和分析(二)
  2. Eclipse+PhoneGap生成Android应用。
  3. 控制actionbar中的向上键
  4. android Toast显示消息的几种方法
  5. Lock-free atomic operations in Android
  6. android 大文件分割上传(分块上传)
  7. Android 各层中日志打印功能的应用
  8. Android(安卓)HAL实现的三种方式(3) - 基
  9. Android(安卓)MVVM框架 DataBinding
  10. Android瀑布流照片墙、滑动切换图片