I want to enable the mobile network/data-network programatically. For this I am using the code given below but its not working. I didn`t receive any error. Toast pops up and says that "Mobile Network has been enabled" but its actually not enabled. Please any help.
Here is complete code.
public class MainActivity extends Activity {
ConnectivityManager connectivity;
NetworkInfo wifiNetworkInfo, mobileNetworkInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
wifiNetworkInfo = connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
mobileNetworkInfo = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifiNetworkInfo.isConnected())
Toast.makeText(this, "WiFi is connected", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "WiFi is not connected", Toast.LENGTH_LONG).show();
if(mobileNetworkInfo.isConnected())
Toast.makeText(this, "MObileNetwork is connected", Toast.LENGTH_LONG).show();
else{
boolean enabled = false;
try {
setMobileDataEnabled(getBaseContext(), enabled);
Toast.makeText(this, "MObileNetwork has been Enabled", Toast.LENGTH_LONG).show();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
private void setMobileDataEnabled(Context context, boolean enabled) throws Throwable {
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class<?> conmanClass = Class.forName(conman.getClass().getName());
final java.lang.reflect.Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class<?> iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}