Как программно отключить 4G / данные?

Как программно отключить 4G / данные в Android 8.0?

Не Wifi, а 4G / Data.

Запуск следующего источника выключит устройство.

public void onClick(View view){
        ConnectivityManager dataManager;
        dataManager  = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        Method dataMtd = null;
        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, true);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
397
3

Ответы 3

На самом деле, начиная с Android 5.0 Lollipop, вы больше не можете ни включать, ни отключать 4G / Phone Data. В любом случае для предыдущих версий и только на устройствах с root-доступом это решение работал.

Чтобы отключить Wi-Fi, этот код должен работать:

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);

Где "status" во втором местоположении должен быть истинным / ложным.

У вас есть соответствующие ресурсы Google? Ссылка пожалуйста

user10517142 17.10.2018 15:14

Вам необходимо рутировать устройство, использовать TelephonyManager вместо ConnectivityManager и добавить разрешение MODIFY_PHONE_STATE.

На Котлине у меня работает следующий код:

fun disable4GNetwork(context: Context) {
val connectivityManager =
    context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val request: NetworkRequest.Builder?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    request = NetworkRequest.Builder()

    request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
    connectivityManager.requestNetwork(
        request.build(),
        object : ConnectivityManager.NetworkCallback() {

            override fun onAvailable(network: Network) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    ConnectivityManager.setProcessDefaultNetwork(network)
                }
            }
        }
    )
}

}

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