Как программно включить мобильные данные, используя права администратора устройства?

Мне нужно программно включить в Android. Хотя я знаю, что это невозможно сделать программно, и Android остановил эту опцию с помощью lollipop, есть ли какая-либо лазейка или опция администрирования устройства, чтобы включить ее?

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

1 ответ

Решение

работает только для рутованных телефонов

public void setMobileDataState(boolean mobileDataEnabled)
{
    try
    {
        TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        Method setMobileDataEnabledMethod = telephonyService.getClass().getDeclaredMethod("setDataEnabled", boolean.class);

        if (null != setMobileDataEnabledMethod)
        {
            setMobileDataEnabledMethod.invoke(telephonyService, mobileDataEnabled);
        }
    }
    catch (Exception ex)
    {
        Log.e(TAG, "Error setting mobile data state", ex);
    }
}

public boolean getMobileDataState()
{
    try
    {
        TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        Method getMobileDataEnabledMethod = telephonyService.getClass().getDeclaredMethod("getDataEnabled");

        if (null != getMobileDataEnabledMethod)
        {
            boolean mobileDataEnabled = (Boolean) getMobileDataEnabledMethod.invoke(telephonyService);

            return mobileDataEnabled;
        }
    }
    catch (Exception ex)
    {
        Log.e(TAG, "Error getting mobile data state", ex);
    }

    return false;
}

Но вам нужно добавить это разрешение (MODIFY_PHONE_STATE) в файл манифеста, в противном случае вы получите исключение SecurityException.

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