Как включить / отключить мобильные данные во всех версиях, включая Lollipop 5

Я использовал этот код, который отлично работал в pre-Lollipop, но не работал на Lollipop. Все, что я хочу сделать, это просто включить / отключить мобильные данные.

 private void setMobileDataEnabled(Context context, boolean enabled) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final Class conmanClass = Class.forName(conman.getClass().getName());
        final Field connectivityManagerField = conmanClass.getDeclaredField("mService");
        connectivityManagerField.setAccessible(true);
        final Object connectivityManager = connectivityManagerField.get(conman);
        final Class connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
        final Method setMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
        setMobileDataEnabledMethod.setAccessible(true);

        setMobileDataEnabledMethod.invoke(connectivityManager, enabled);
    }

Помогите мне сказать, как я делаю это в леденце на палочке?

1 ответ

Для включения Wi-Fi

    WifiManager wifiManager = (WifiManager) mContext
    .getSystemService(Context.WIFI_SERVICE);
    wifiManager.setWifiEnabled(true);

Для включения данных:

   ConnectivityManager dataManager;
dataManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Method dataMtd = null;
try {
    dataMtd = ConnectivityManager.class
            .getDeclaredMethod(
                    "setMobileDataEnabled",
                    boolean.class);
} catch (NoSuchMethodException e) {
    e.printStackTrace();
}
dataMtd.setAccessible(true);
try {
    dataMtd.invoke(dataManager, true);
} catch (IllegalAccessException
        | IllegalArgumentException
        | InvocationTargetException e) {
    e.printStackTrace();
}
Другие вопросы по тегам