检查Android手机是否可以访问互联网

时间:2011-12-14 11:14:11

标签: android

是否可以通过尝试连接到网址来检查手机是否可以访问互联网?如果它成功连接到网站,应用程序将正常运行,如果连接失败,将弹出alertdialog告诉用户问题。

4 个答案:

答案 0 :(得分:5)

检查互联网并不能保证您在没有任何麻烦的情况下访问您的网站。看,基本上即使有互联网连接,事情仍然可能出错。拥有有效的网络接口并不能保证特定的网络服务可用。网络问题,服务器停机时间,低信号,强制网络门户,内容过滤器等都可能阻止您的应用访问服务器。例如,在收到Twitter服务的有效回复之前,您无法确定您的应用是否可以访问Twitter。

但是,您可以执行以下操作。

ConnectivityManager的getActiveNetworkInfo()方法返回一个NetworkInfo实例,表示它可以找到的第一个连接的网络接口,如果没有连接,则返回null。检查此方法是否返回null应该足以判断是否有可用的Internet连接。

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

您还需要:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在您的Android清单中。

答案 1 :(得分:2)

这是一种方式(如果你搜索了一下,我相信你会达到它)

private boolean isNetworkAvailable() {

    ConnectivityManager cm
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ai= cm.getActiveNetworkInfo();
    return ai!= null;
}

另一种方法是简单地用try ... catch来包围你的请求并捕获IOException。

问题是这种方法会阻塞一段时间。您可以添加catch代码以显示alertDialog

答案 2 :(得分:1)

试试这个 -

if (!isNetworkAvailable())
     {
         //No network available       
     } 


private boolean isNetworkAvailable() {
            ConnectivityManager connectivityManager 
                  = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            return activeNetworkInfo != null;
        }

答案 3 :(得分:0)

在您的manifest.xml中提及Internet的权限,并使用以下代码

private boolean isNetworkAvailable() {
            ConnectivityManager connectivityManager 
                  = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            return activeNetworkInfo != null;
        }
相关问题