2015-01-07 3 views
0

Мой SDK обновлен, и я не могу включить или отключить 3G с кодом на Eclipse.включить 3g вкл./Выкл. Android 4.4 или выше

Этот код больше не работает.

private void setMobileDataEnabled(Context context, boolean enabled) throws 
     ClassNotFoundException, NoSuchFieldException, IllegalAccessException, 
     NoSuchMethodException, InvocationTargetException { 
    final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(
     Context.CONNECTIVITY_SERVICE); 
    final Class conmanClass = Class.forName(conman.getClass().getName()); 
    final Field connectivityManagerField = conmanClass.getDeclaredField("mService"); 
    connectivityManagerField.setAccessible(true); 
    final Object connectivityManager = connectivityManagerField.get(conman); 
    final Class connectivityManagerClass = Class.forName(connectivityManager 
     .getClass().getName()); 
    final Method setMobileDataEnabledMethod = connectivityManagerClass 
     .getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); 
    setMobileDataEnabledMethod.setAccessible(true); 

    setMobileDataEnabledMethod.invoke(connectivityManager, enabled); 
} 
+0

Только системные приложения могут это сделать сейчас :( –

+0

Reflection == Он может прекратить работу в любой момент –

ответ

0

Приложения не должны включать и выключать 3g/4g/GPS самостоятельно. Были сбои/обходные пути, которые позволили это, но они не являются надежными, поскольку они фиксируются.

Что вы должны сделать, это уведомить пользователя о том, что их 3g состояние необходимо изменить, может быть, с AlertDialog, и дать им возможность, чтобы перейти к странице настроек телефона, через умысел, где они могут вручную включить 3g.

Смежные вопросы