android中检查互联网连接的最佳方法
当设备连接到网络但没有互联网连接时,我想检查互联网连接。 我想知道检查这个的最好方法是什么 我问这个问题是因为没有找到任何可以接受的答案。 这里有一些重复的问题,但没有一个可以接受的答案: 还有两个问题已被接受,但答案并不适用: 通过这种方式,您可以确定是否可以访问internet—无需处理ping请求或类似的问题android中检查互联网连接的最佳方法,android,network-programming,Android,Network Programming,当设备连接到网络但没有互联网连接时,我想检查互联网连接。 我想知道检查这个的最好方法是什么 我问这个问题是因为没有找到任何可以接受的答案。 这里有一些重复的问题,但没有一个可以接受的答案: 还有两个问题已被接受,但答案并不适用: 通过这种方式,您可以确定是否可以访问internet—无需处理ping请求或类似的问题 Use the below class to check whether internet is available or not. 供参考: Java import an
Use the below class to check whether internet is available or not.
供参考:
Java
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionDetector {
private Context _context;
public ConnectionDetector(Context context){
this._context = context;
}
public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
}
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
公共类连接检测器{
私人语境(private Context)(私人语境);;
公共连接检测器(上下文){
这._context=context;
}
公共布尔值未连接到Internet(){
ConnectivityManager connectivity=(ConnectivityManager)_context.getSystemService(context.connectivity_SERVICE);
if(连接性!=null)
{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null)
对于(int i=0;i
对否决票:请解释你的否决票。对于某些用户来说,这是一个完全合法的问题。很明显,@f470071因为它是无数类似问题的复制品,在这里继续。。。艾哈迈德没有做任何研究…@Selvin,请再读一遍这个问题。你能给我一个公认的答案吗?我想你不明白可靠地检测互联网接入是不可能的。没有一个系统可以检测到没有响应的服务器(即使您可以访问Internet)和被阻止的连接(没有Internet)之间的差异。所有现有的方法都只是尝试ping一个可能可用的服务器。不应该混淆网络访问和互联网访问。我知道,你可以轻松地使用WiFi,无需外部连接。这就是为什么这个代码检查互联网连接,而不是WiFi接入。不工作!当wifi已连接但没有互联网时,“断开连接”将成为现实!这是关于您的问题的官方示例代码。当连接了wifi但没有互联网连接时,返回true!然后试试这个例子。但是在我的项目中使用了上面的例子。
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionDetector {
private Context _context;
public ConnectionDetector(Context context){
this._context = context;
}
public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
}