在Android/Java代码中检查互联网连接



我一直在使用以下代码(从网络获得)来检查我的Android (web)应用程序中的互联网连接。

import android.content.Context;
import android.net.ConnectivityManager;
public class DetectConnection {
public static boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
return (con_manager.getActiveNetworkInfo() != null
&& con_manager.getActiveNetworkInfo().isAvailable()
&& con_manager.getActiveNetworkInfo().isConnected());
}
}

Android studio现在给我关于使用getActiveNetworkInfo()的弃用警告。在Internet上的简单搜索显示,我应该使用[1]中的API。然而,我不知道该怎么做。什么好主意吗?

[1] https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
public class NetworkCheck {
private boolean connected = false;
public NetworkCheck(Context context) {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerDefaultNetworkCallback(
new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
connected = true;
}
@Override
public void onLost(Network network) {
connected = false;
}
}
);
} catch (Exception e) {
connected = false;
}
}
public boolean isConnected() {
return connected;
}
}

你可以像这样检查

试试这个!

boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {

connected = true;
}
else
connected = false;

您将需要在清单中使用此权限:

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

最新更新