如何使用设备管理权限以编程方式打开移动数据?

时间:2019-02-20 13:16:44

标签: android device-admin mobile-data

我需要在Android中以编程方式打开。虽然我知道不可能以编程方式进行此操作,并且android从lollipop停止了此选项,但是是否有任何漏洞或设备管理选项可以将其打开?

PS:我不想通过导航到设置来打开移动数据。我想在不解锁屏幕的情况下打开移动数据

1 个答案:

答案 0 :(得分: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)添加到Manifest文件中,否则将收到SecurityException。