Как программно отключить 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();
}
}




На самом деле, начиная с Android 5.0 Lollipop, вы больше не можете ни включать, ни отключать 4G / Phone Data. В любом случае для предыдущих версий и только на устройствах с root-доступом это решение работал.
Чтобы отключить Wi-Fi, этот код должен работать:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);
Где "status" во втором местоположении должен быть истинным / ложным.
Вам необходимо рутировать устройство, использовать 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)
}
}
}
)
}
}
У вас есть соответствующие ресурсы Google? Ссылка пожалуйста