Как программно включить мобильные данные, используя права администратора устройства? - PullRequest
0 голосов
/ 20 февраля 2019

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

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

1 Ответ

0 голосов
/ 20 февраля 2019

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

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.

...