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

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

Не Wi-Fi, а 4G/данные.

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

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();
        }
    }

person user10517142    schedule 17.10.2018    source источник


Ответы (3)


Следующий код работает для меня на Kotlin:

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)
                }
            }
        }
    )
}

}

person Sam    schedule 14.12.2020

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

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

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

Где «статус» во втором месте должен быть истинным/ложным.

person shannontesla    schedule 17.10.2018
comment
У вас есть соответствующие ресурсы Google? Ссылку пожалуйста - person user10517142; 17.10.2018

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

person Pravin Yadav    schedule 17.10.2018