我想建立一个测试,以查看当没有互联网访问时,我的代码是否正常工作。有没有一种方法可以暂时关闭互联网访问以进行测试?
我尝试寻找,但未能找到。
这段代码示例适用于运行Gingerbread及以上版本的Android手机:启用/禁用数据连接
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);
}
不要忘记将此行添加到您的清单文件中
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);
状态根据需求可能为true或false。
同时在清单文件中:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
java.lang.NoSuchMethodException: setMobileDataEnabled [boolean]
。设备:Nexus 5x,Android 版本:7.1.1。 - David Novák嗯,要禁用Wifi,您可以使用以下代码:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true); // "true" TO ENABLE || "false" TO DISABLE
int currentAPIVersion = android.os.Build.VERSION.SDK_INT;
if (currentAPIVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// RUN THE CODE FOR 2.3+
} else {
// RUN THE CODE FOR API LEVEL BELOW 2.3
}
看看哪个适合你。我怀疑后者会更好。我个人从未测试过启用或禁用数据连接。
感谢链接解决方案的作者。 ;-)
注意:数据连接解决方案基于非官方API,可能在未来的版本中无法使用。
DDMS
设置中关闭它的Internet访问。