Мобильные данные не включаются

Я задал этот вопрос, но я не получил ответа.

Я использовал следующий код, чтобы включить мобильные данные (3G).

private static void setMobileDataEnabled(Context context, boolean enabled){

            try{
                ConnectivityManager conman = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
                Method setMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
                setMobileDataEnabledMethod.setAccessible(true);
                setMobileDataEnabledMethod.invoke(conman, enabled);

            }catch(NoSuchMethodException e){e.printStackTrace();}
            catch(InvocationTargetException e){e.printStackTrace();}
            catch(IllegalAccessException e){e.printStackTrace();}

        }

Я называю это так:

setMobileDataEnabled(getBaseContext(), true/false);

Он включает / отключает мобильные данные правильно, но этот код не работает правильно на устройствах с двумя SIM-картами. Я тестировал его на Motorola Razr D1, D3, в Samsung Dual-SIM (не помню сейчас), но этот код не работает. Все отлично работает, приложение не падает.

Вместо "getBaseContext()" я попытался "getApplicationContext()" и "this", но ничего не изменилось.

Я узнал, что Android не был разработан для устройств с двумя чипами, это может быть проблемой, так как я не могу нацелиться на любую SIM-карту, поэтому я не могу найти какой-либо трюк или что-то еще, чтобы "исправить" код, Я прав?

Что я могу сделать, чтобы включить / выключить мобильные данные на устройствах с двумя чипами? Я посмотрел на исходные коды, setMobileDataEnabled является "общедоступным", не должен ли он иметь к нему доступ?

Я также нахожу класс IConnectivityManager, но это не расширение Java, я думаю, что это.aidl или что-то (не помню), это может быть полезно?

Я не знаю, что делать, пожалуйста, мне нужна помощь.

Извините за мой английский.

Благодарю.

1 ответ

Попробуйте эту ссылку Включить / отключить мобильные данные (GPRS) с помощью кода

Использование универсального метода всегда рекомендуется. Однако ваш код может работать только с API 8/API 10. Добавили ли вы разрешения в файл манифеста Android? Проверьте первый ответ на связанный вопрос и выполните его.

Если это не работает, проверьте второй, который идентичен вашему коду. Но я рекомендую первый метод, потому что таким образом вам не придется писать код для каждого API отдельно. Также, как сказал @tdevinda, код может варьироваться от устройства к устройству, версий для одного сима в несколько симов, gsm-cdma-wcdma, уровней API и производителей устройств. Я надеюсь, что это помогает:)

РЕДАКТИРОВАТЬ: Там нет официальной помощи со страницы разработчиков Android еще. Однако, вы можете подать запрос. Я также не смог найти решение этой проблемы. Dual-sim проблема не решена.

РЕДАКТИРОВАТЬ 2: Проверьте изображение.Решение трюк

Другие вопросы по тегам