Отключить передачу данных в Dual SIM Android

Я хочу отключить передачу данных, и я использую этот код.

ConnectivityManager dataManager;
    dataManager  = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

    try {
        dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
    } catch (NoSuchMethodException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    dataMtd.setAccessible(true);
    try {
        dataMtd.invoke(dataManager, false);
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

это не будет работать в двойной сим. так что кто-то может мне помочь. Как я могу отключить подключение для передачи данных в Dual SIM телефона Android? и как я могу проверить, если телефон двойной сим или нет

1 ответ

Решение

Некоторые вещи, чтобы упомянуть здесь:

  • до Android 5.1 не было официального API для функциональности dual sim. Таким образом, кажется, нет универсального решения для старых устройств. Начиная с 5.1 доступен API.
  • ваш код больше не будет работать на Android 5+, как указано в этом вопросе
  • тем не менее, этот ответ обеспечивает решение обеих пули выше: метод setMobileNetworkfromLollipop проверяет, является ли цель 5 или 5,1+, и в случае 5,1+ она проходит по всем идентификаторам подписки (= сим-карты) для переключения служб данных. Вы можете комбинировать его с вашим кодом, чтобы ориентироваться и на предыдущие версии. Недостаток: требуется рут-доступ, а функциональность dual-sim ограничена до 5.1+.
Другие вопросы по тегам