ConnectivityManager cm =
                   (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
                 cm.setMobileDataEnabled(true);
                 boolean enable = cm.getMobileDataEnabled();
找不到setMobileDataEnabled(true)和getMobileDataEnabled()这两个函数,请问是什么原因?难道是需要导入jar包?如果是缺少jar包是需要导入哪几个jar包?

解决方案 »

  1.   

    应该是 hide了可以用反射调用
      

  2.   


    代码:
    ConnectivityManager conMgr = (ConnectivityManager) G_O_CActivity.this
    .getSystemService(Context.CONNECTIVITY_SERVICE); Class<?> conMgrClass = null; // ConnectivityManager类
    Field iConMgrField = null; // ConnectivityManager类中的字段
    Object iConMgr = null; // IConnectivityManager类的引用
    Class<?> iConMgrClass = null; // IConnectivityManager类
    Method setMobileDataEnabledMethod = null; // setMobileDataEnabled方法 try {
    // 取得ConnectivityManager类
    conMgrClass = Class.forName(conMgr.getClass().getName());
    // 取得ConnectivityManager类中的对象mService
    iConMgrField = conMgrClass.getDeclaredField("mService");
    // 设置mService可访问
    iConMgrField.setAccessible(true);
    // 取得mService的实例化类IConnectivityManager
    iConMgr = 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, true);
    } 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 (Exception e) {
    e.printStackTrace(); }AndroidManifest.xml 权限:
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>报错信息:
    java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS
    这个是怎么回事呀,手动勾上已启用数据运行不报错,把启用数据勾去掉,打开已启用数据报错