做APN开关是遇到问题ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
mConnectivityManager.setMobileDataEnabled(true);setMobileDataEnabled 提示错误
The method setMobileDataEnabled(boolean) is undefined for the type ConnectivityManager
网上找了是此方法被隐藏.改怎么调用啊?

解决方案 »

  1.   

    反射之后提示要加权限 
     java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS可是我已经加了还是一样提示这啊
    啊啊啊啊啊.!!!各位大虾.帮帮忙.!
      

  2.   

    报错log03-28 17:41:56.150: W/System.err(9429):  at android.net.IConnectivityManager$Stub$Proxy.setMobileDataEnabled(IConnectivityManager.java:631)
    03-28 17:41:56.150: W/System.err(9429):  at java.lang.reflect.Method.invokeNative(Native Method)
    03-28 17:41:56.150: W/System.err(9429):  at java.lang.reflect.Method.invoke(Method.java:521)
    03-28 17:41:56.150: W/System.err(9429):  at com.sumq.APNTestActivity.setMobileDataEnabled(APNTestActivity.java:308)
    03-28 17:41:56.150: W/System.err(9429):  at com.sumq.APNTestActivity.access$0(APNTestActivity.java:296)
    03-28 17:41:56.150: W/System.err(9429):  at com.sumq.APNTestActivity$2.onClick(APNTestActivity.java:67)
    03-28 17:41:56.150: W/System.err(9429):  at android.view.View.performClick(View.java:2464)
    03-28 17:41:56.150: W/System.err(9429):  at android.view.View$PerformClick.run(View.java:8930)
    03-28 17:41:56.154: W/System.err(9429):  at android.os.Handler.handleCallback(Handler.java:587)
    03-28 17:41:56.154: W/System.err(9429):  at android.os.Handler.dispatchMessage(Handler.java:92)
    03-28 17:41:56.154: W/System.err(9429):  at android.os.Looper.loop(Looper.java:123)
    03-28 17:41:56.154: W/System.err(9429):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    03-28 17:41:56.154: W/System.err(9429):  at java.lang.reflect.Method.invokeNative(Native Method)
    03-28 17:41:56.154: W/System.err(9429):  at java.lang.reflect.Method.invoke(Method.java:521)
    03-28 17:41:56.154: W/System.err(9429):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    03-28 17:41:56.154: W/System.err(9429):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    03-28 17:41:56.154: W/System.err(9429):  at dalvik.system.NativeStart.main(Native Method)
    03-28 17:41:56.154: W/System.err(9429): Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS
    03-28 17:41:56.158: W/System.err(9429):  at android.os.Parcel.readException(Parcel.java:1260)
    03-28 17:41:56.158: W/System.err(9429):  at android.os.Parcel.readException(Parcel.java:1248)
    03-28 17:41:56.158: W/System.err(9429):  at android.net.IConnectivityManager$Stub$Proxy.setMobileDataEnabled(IConnectivityManager.java:627)
    03-28 17:41:56.158: W/System.err(9429):  ... 16 more
      

  3.   

    代码private void setMobileDataEnabled(Context context, boolean enabled) {
        final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        Field iConnectivityManagerField;
    try {
    final Class conmanClass = Class.forName(conman.getClass().getName());
    iConnectivityManagerField = conmanClass.getDeclaredField("mService");
    iConnectivityManagerField.setAccessible(true);
    final Object iConnectivityManager = iConnectivityManagerField.get(conman);
    final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
    final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
    setMobileDataEnabledMethod.setAccessible(true);

    setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchFieldException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
      

  4.   

    java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS你配置文件里加个这个 android.permission.WRITE_SECURE_SETTINGS  权限再试试
      

  5.   

    自行编译framework.jar,把这个jar包加入工程的classpath,直接调用