如何在Android中检查wifi连接的互联网连接?
当wifi连接到无线调制解调器互联网覆盖范围是否存在时,它总是说“是”,您已连接,它只检查wifi连接而不是互联网连接,因此如何处理这种情况 1.)您可以按以下方式检查它:如何在Android中检查wifi连接的互联网连接?,android,Android,当wifi连接到无线调制解调器互联网覆盖范围是否存在时,它总是说“是”,您已连接,它只检查wifi连接而不是互联网连接,因此如何处理这种情况 1.)您可以按以下方式检查它: URL url = new URL("YOUR urlString"); HttpURLConnection conn= (HttpURLConnection) url.openConnection(); . . int responseCode = conn.getResponseCode(); //if response
URL url = new URL("YOUR urlString");
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
.
.
int responseCode = conn.getResponseCode();
//if responseCode = 200 - THEn CONN is connected
或
2)你可以做一些事情,比如
public static boolean isNetworkAvailable(Activity activity) {
ConnectivityManager connectivity = (ConnectivityManager) activity
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true; //<-- -- -- Connected
}
}
}
}
return false; //<-- -- -- NOT Connected
}
公共静态布尔值isNetworkAvailable(活动){
ConnectionManager连接=(ConnectionManager)活动
.getSystemService(Context.CONNECTIVITY\u服务);
if(连接性==null){
返回false;
}否则{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null){
对于(int i=0;i 返回true;//您尝试过这个吗
()
描述说:
指示是否存在网络连接以及是否可以建立连接和传递数据
对,如果您使用ConnectivityManager,则只提供连接信息(WiFi、mobile、WiMax等)以及连接与否
要确保数据连接可以进行ping,请执行以下操作:
public static boolean ping() {
try {
SocketAddress addr = new InetSocketAddress("www.example.com", 80); // Set IP/Host and Port
Socket socket = new Socket();
//Connect socket to address, and set a time-out to 5 sec
socket.connect(addr, 5000);
//If network isn't conecctet then throw a IOException else socket is connected successfully
socket.close();
return true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
试试这个
private boolean haveNetworkConnection(Context context)
{
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
{
if (ni.isConnected())
{
haveConnectedWifi = true;
Log.v("WIFI CONNECTION ", "AVAILABLE");
} else
{
Log.v("WIFI CONNECTION ", "NOT AVAILABLE");
}
}
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
{
if (ni.isConnected())
{
haveConnectedMobile = true;
Log.v("MOBILE INTERNET CONNECTION ", "AVAILABLE");
} else
{
Log.v("MOBILE INTERNET CONNECTION ", "NOT AVAILABLE");
}
}
}
return haveConnectedWifi || haveConnectedMobile;
}
希望能有所帮助。您可以使用此功能在Android中检查互联网连接,以获得wifi或移动数据连接
public boolean isConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean NisConnected = activeNetwork != null && activeNetwork.isConnected();
if (NisConnected) {
// if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE || activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return true;
else
return false;
}
return false;
}
使用此代码
final ConnectivityManager connectivityManager = (ConnectivityManager)context.
getSystemService(Context.CONNECTIVITY_SERVICE);
final Network network = connectivityManager.getActiveNetwork();
final NetworkCapabilities capabilities = connectivityManager
.getNetworkCapabilities(network);
return capabilities != null
&& capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
也就这样
public static boolean isNetworkAvailable(Context context)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
。只需尝试连接到一个知名网站,例如stackoverflow.com-如果连接成功,则您具有internet连接。@AleksG如果我尝试连接,则活动将被挂起,直到我们获得连接…出现死锁情况,您可以在尝试连接之前尝试设置套接字超时。如果将超时设置为3秒,则en它将尝试连接3秒钟,如果不成功,则返回失败。@AleksG:有时甚至网络连接也存在,而且速度很慢,在这种情况下,可能会发生超时并返回失败消息,对不对。Chintan:我尝试了第二种方法。即使我断开wifi,它也会在网络信息中显示已连接。我不知道该怎么办do?第一种是最佳方法(y)