I have always used this code to programmatically use mobile data:
ConnectivityManager conman = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); @SuppressWarnings("rawtypes") final Class conmanClass = Class.forName(conman.getClass().getName()); final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); iConnectivityManagerField.setAccessible(true); final Object iConnectivityManager = iConnectivityManagerField.get(conman); @SuppressWarnings("rawtypes") final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName()); @SuppressWarnings("unchecked") final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible(true); setMobileDataEnabledMethod.invoke(iConnectivityManager, true);
This worked well, except now on Android 4.4.2, where I get this exception:
java.lang.NoSuchMethodException: setMobileDataEnabled [boolean] at java.lang.Class.getConstructorOrMethod(Class.java:472) at java.lang.Class.getDeclaredMethod(Class.java:640) at com.test.auto3gPro.ClasseConnessione.settaConnessione(ClasseConnessione.java:48) at com.test.auto3gPro.receiver.ScreenBroadcastReceiver.onReceive(ScreenBroadcastReceiver.java:108) at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5081) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method)
Does anyone know how to fix this?
android android-4.4-kitkat
Slv3r Feb 02 '14 at 1:36 on 2014-02-02 13:36
source share