I can use android.settings.WIRELESS_SETTINGS
to turn on wireless and Bluetooth,but what should I use to turn on mobile internet?
Asked
Active
Viewed 7,052 times
6

Anirudh Ramanathan
- 46,179
- 22
- 132
- 191

Ryan
- 5,456
- 25
- 71
- 129
-
1Very similar to :http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android – Anirudh Ramanathan Jul 14 '12 at 14:12
3 Answers
7
From Lollipop there is restrictions in enabling mobile data programatically.
Use this code to intent to Mobile Data Usage where you can TurnOn/Off Mobile Data :
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
startActivity(intent);

Sriram C G
- 931
- 13
- 24
0
Use this method to (turn off wifi(if on wifi)) and turn on mobile data connection
public boolean isConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean NisConnected = activeNetwork != null && activeNetwork.isConnected();
if (NisConnected) {
// if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE || activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// wifi.setWifiEnabled(true);//Turn on Wifi
wifi.setWifiEnabled(false);//Turn off Wifi
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return true;
else
return false;
}
return false;
}
after use up method , if you can see internet not connection then use bellow method to turn on Mobile data
private void setMobileDataEnabled(Context context, boolean enabled) {
try {
final ConnectivityManager conman = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final 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);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
Also Need Permission in Manifests
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

Selim Raza
- 497
- 7
- 16
0
Check if there is Internet or not.
public class NetworkUtil {
public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 2;
public static int TYPE_NOT_CONNECTED = 0;
public static int getConnectivityStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (null != activeNetwork) {
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
return TYPE_WIFI;
if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return TYPE_MOBILE;
}
return TYPE_NOT_CONNECTED;
}
public static int getConnectivityStatusString(Context context) {
int conn = NetworkUtil.getConnectivityStatus(context);
int status = -1;
if (conn == NetworkUtil.TYPE_WIFI) {
status = 1;
} else if (conn == NetworkUtil.TYPE_MOBILE) {
status = 2;
} else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
status = 0;
}
return status;
}`
Then if status == 0 ; then start this Intent.
startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));

xbadal
- 1,284
- 2
- 11
- 24
-
No this is not answering the question. You are saying check the Internet and Intent to Settings.ACTION_WIRELESS_SETTINGS no he wanted to Intent to turn on Mobile Internet. – Sriram C G Dec 15 '16 at 07:48
-
yes! Exactly but it can not be done unless device is rooted. you can only open settings option. – xbadal Dec 15 '16 at 08:22
-
For more Info pls refer this [link][http://stackoverflow.com/questions/31120082/latest-update-on-enabling-and-disabling-mobile-data-programmatically] – xbadal Dec 15 '16 at 08:23