我有一个方法调用isNetworkAvailable()
检查用户是否启用了wap/wifi/wimax,这适用于Android 2.1到2.3+。
但现在,该应用程序的用户在摩托罗拉xoom上使用蜂窝3.2他不能打开应用程序。
在我的android开发者web界面中,我可以看到以下日志错误:http://paste.ubuntu.com/811881/
private boolean isNetworkAvailable()
{
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileInfo = connec.getNetworkInfo(0);
NetworkInfo wifiInfo = connec.getNetworkInfo(1);
NetworkInfo wimaxInfo = connec.getNetworkInfo(6);
if (wimaxInfo!=null) {
return mobileInfo.isConnected() || wifiInfo.isConnected()|| wimaxInfo.isConnected();
}
else {
return mobileInfo.isConnected() || wifiInfo.isConnected();
}
}
请参阅此处的整个课程/活动(第276行):
https://github.com/voidcode/Diaspora-Webclient/blob/master/src/com/voidcode/diasporawebclient/MainActivity.java
mobileInfo或wifiInfo可能为空。在只有wifi的设备上,如果mobileInfo(ConnectivityManager.TYPE_MOBILE)为null,我不会感到惊讶。
我在摩托罗拉Xoom上也遇到过同样的问题,因为它不支持ConnectivityManager.TYPE_MOBILE
的连接。
以下代码对我来说运行良好:
ConnectivityManager connMngr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
return connMngr.getActiveNetworkInfo().isConnected();
} catch (NullPointerException npe) {
return false;
}