Я использую ниже код для включения/выключения мобильной сети.Включить/выключить мобильное сетевое подключение программно в Android-железе Android
final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field 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, ON);
Я проверил этот код с Android 2.3.X, 4.0.X и 4.1.X. Он работает только с 2.3.X и 4.0.X, но не удалось с 4.1.X.
Я получаю исключение java.lang.NoSuchFieldException: mService
во время тестирования с помощью Android Jelly Bean.
Есть ли другие решения для моей проблемы? Я добавил все необходимые разрешения в файл манифеста.
Не нужен ли ваш телефон для этого? –
Не знаете, нужны ли вам какие-то другие сети или вы хотите работать в не подключенном режиме, но думаете ли вы о режиме самолета? – lithos35