我一直在使用以下代码(从网络获得)来检查我的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。然而,我不知道该怎么做。什么好主意吗?
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" />