Android互联网连接检查问题

Cha*_*les 16 android android-internet android-permissions

我是Android开发的新手,正在开发一款Android应用程序,需要通过Wifi,EDGE或3G将手机连接到互联网.

这是我用来检查互联网连接是否可用的代码

public static boolean isConnected()
{
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
Run Code Online (Sandbox Code Playgroud)

我还在清单文件中设置了这些权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

当启用3G时,这在运行Android 1.5版的模拟器中工作正常,但是当我禁用3G连接时它会崩溃.当我调用isConnectedOrConnecting()时,我的应用程序抛出空指针异常.运行Android 2.1的HTC Desire也会发生同样的事情.

希望有人知道解决这个问题.

提前致谢!

Com*_*are 25

如果崩溃直接在您的线路上:

return cm.getActiveNetworkInfo().isConnectedOrConnecting();
Run Code Online (Sandbox Code Playgroud)

然后这意味着getActiveNetworkInfo()返回null,因为没有活动网络 - 在这种情况下,您的isConnected()方法应该返回false.

  • 是的,如果`getActiveNetworkInfo()`的文档确实存在,它会有所帮助.:-) (6认同)

mut*_*112 8

我写了这个方法来处理这个:

public boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni!=null && ni.isAvailable() && ni.isConnected()) {
        return true;
    } else {
        return false; 
    }
}
Run Code Online (Sandbox Code Playgroud)

一种方法,我猜...

  • 怎么回事:return(ni!= null && ni.isAvailable()&& ni.isConnected()); :P (9认同)