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