我的应用程序中的一项功能通过互联网发送数据。在尝试发送数据之前,我检查是否存在连接:
private boolean isConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State val1 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
NetworkInfo.State val2 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
return NetworkInfo.State.CONNECTED.equals(val1) || NetworkInfo.State.CONNECTED.equals(val2);
}
这在模拟器和我测试过的几个真实设备上运行得非常好。然后我收到了客户的错误报告,经调查发现是NullPointerException
在线getState
的TYPE_MOBILE
.
显然,在没有 3G 的设备(仅限 WiFi 的平板电脑)上connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
返回。null
虽然我在 Nexus 7 模拟器上进行了测试,但我没有收到此错误。
因此,我感兴趣的是创建一个明确没有 3G 的 AVD(即仅用于 WiFi 设备的 AVD),以便我可以调查/测试此类场景。我在模拟器选项中没有找到任何东西,但也许我只是在找错地方。这甚至可能吗?