以编程方式切换“限制背景数据”

时间:2013-09-08 12:02:03

标签: android networking restriction

如果我转到“设置 - 数据使用”并按“属性”,我可以使用带有Android 4.1.2的三星Galaxy S2(i9105P)激活“限制背景数据”。

有没有办法以编程方式执行此操作,包括开启和关闭?

我只想在某些条件下激活/停用它(由我的应用确定),所以我不必手动记住激活它。

PS:我搜索了android.developer.com网站,但没有成功。

2 个答案:

答案 0 :(得分:0)

正如我所知道的Android 4.x你不能这样做。只有Monkey runner插件可以帮到你。

但如果您需要Android 2.x,这是我使用的方法:

/**
 * Switch mobile data network access 
 * */

public void nmSwitchMobileNetworkDataAccess(boolean swtichCellOn){

    boolean disable;
    TelephonyManager telephonyManager = (TelephonyManager)m_context.getSystemService(Context.TELEPHONY_SERVICE);

    if(telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED){
        disable = false;
    }else{
        disable = true;  
    }

    try{
        final ConnectivityManager conman = (ConnectivityManager)m_context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        final Method setMobileDataEnabledMethod = conman.getClass().getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);

        if(disable == true && swtichCellOn == true){
            setMobileDataEnabledMethod.invoke(conman, true);//turn cell on

            DispatcherAndroid.androidObserverItf.androidObserver_OnProgress("Turn cell on, done",
                    EMethodResponse.ON_NM_REQ.FromEnumToString()  );
        }
        else if(disable == false && swtichCellOn == false){
            setMobileDataEnabledMethod.invoke(conman, false);//turn cell off

            DispatcherAndroid.androidObserverItf.androidObserver_OnProgress("Turn cell off, done",
                    EMethodResponse.ON_NM_REQ.FromEnumToString()  );
        }   
        else if((disable == false && swtichCellOn == true) || (disable == true && swtichCellOn == false)){
            DispatcherAndroid.androidObserverItf.androidObserver_OnProgress("No changes",
                    EMethodResponse.ON_NM_REQ.FromEnumToString()  );
        }

    }
    catch(Exception e){
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

您可以在命令行中运行此命令 svc data disablesvc data enable 你显然需要root来做到这一点,就像这样:

Runtime.getRuntime().exec("echo svc data disable | su");

如果您的设备已植根,则应显示root对话框。