Мобильные данные не включаются
Я задал этот вопрос, но я не получил ответа.
Я использовал следующий код, чтобы включить мобильные данные (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: Проверьте изображение.