Я задал этот вопрос, но ответа не получил.Мобильный телефон не включен
Я использовал следующий код для включения мобильных данных (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);
Это позволит/правильно отключить мобильные данные, но этот код не работает корректно на устройствах Dual SIM. Я тестировал его на Motorola Razr D1, D3, в Samsung Dual-SIM (теперь не помню), но этот код не работает. Все работает нормально, приложение не падает.
Вместо «getBaseContext()» я попытался «getApplicationContext()» и «this», но ничего не изменилось.
Я узнал, что Android не предназначен для устройств с двумя чипами, это может быть проблемой, поскольку я не могу настроить таргетинг на любую SIM-карту, поэтому я не могу найти какой-либо трюк или что-нибудь еще, чтобы «исправить», код, я прав?
Что я могу сделать для включения или выключения мобильных данных на устройствах с двумя чипами? Я взглянул на Исходные коды, setMobileDataEnabled является «общедоступным», whe не должен иметь к нему доступ?
Я также нашел класс IConnectivityManager, но это не расширение Java, я думаю, что это .aidl или что-то (не помню), это может быть полезно?
Я не знаю, что делать, пожалуйста, мне нужна помощь.
Извините за мой английский.
Спасибо.
Реализация Dual-SIM может быть проприетарной базой кода, которая является кодовой базой AOSP. Это я считаю причиной отсутствия метода, который вы ищете. –