使用此方法,您可以更改系统设置:‘设置->无线和网络->移动网络设置->数据启用'
代码示例:private void setMobileDataEnabled(Context context, boolean enabled) {
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);}
同时你也需要改变网络状态许可。
不用说,这种方法在未来的Android版本中可能行不通。但我想,像“3G看门狗”、“APNdroid”或“DataLock”这样的应用程序是这样工作的。
更新:
setMobileDataEnable方法在Lolliop上不再可用