If I go to "Settings - Data Usage" and press the "Properties" I can activate "Restrict Background Data", using a Samsung Galaxy S2 (i9105P) with Android 4.1.2.
Is there any way I can do this programmatically, both on and off?
I only want to activate/deactivate it under certain conditions (determined by my app) so I don't have to manually remember to activate it.
PS: I searched the android.developer.com website, but with no success.
You can run this command in the command line
svc data disable
or svc data enable
You obviously need root to do that, like this:
Runtime.getRuntime().exec("echo svc data disable | su");
This should bring up root dialog if your device is rooted.
As I know for Android 4.x you cant do that. Only monkey runner plugin can help you.
But if you need for Android 2.x, this is method I used:
/**
* 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();
}
}