我一直在使用以下代码(从网络获取)来检查我的 Android(网络)应用程序中的互联网连接。
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()
的弃用警告。在互联网上简单搜索一下,我应该使用[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" />
我使用的代码没有给出连接互联网的结果,但即使网络不提供互联网连接,连接到网络也会返回true。
public class InternetCkecker
{
public boolean isConnected() {
try {
Process process = Runtime.getRuntime().exec("ping
-c 1 google.com");
int returnVal = process.waitFor();
return (returnVal == 0);
} catch (Exception e) {
return false;
}
}
}
仅当您实际连接到互联网时,此函数才会返回true