检查网络连接的android
答
最好是(1)通过在上下文,使得每一次活动都可以调用这个函数,和(2)使该功能静:
public boolean isNetworkOnline() {
boolean status=false;
try{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getNetworkInfo(0);
if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) {
status= true;
}else {
netInfo = cm.getNetworkInfo(1);
if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED)
status= true;
}
}catch(Exception e){
e.printStackTrace();
return false;
}
return status;
}
答
要获得getActiveNetworkInfo()来工作,你需要将以下内容添加到清单中。
1. uses-permission android:name="android.permission.INTERNET"
2. uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
更好地使用netInfo.isConnected(),而不是netInfo.isConnectedOrConnecting
也试试这个
Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
或
Context.getSystemService(Context.CONNECTIVITY_SERVICE).requestRouteToHost(TYPE_WIFI, int hostAddress)
答
这是我如何把它一起在一个项目:
清单文件:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
静态函数:
public static boolean isNwConnected(Context context) {
if (context == null) {
return true;
}
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo nwInfo = connectivityManager.getActiveNetworkInfo();
if (nwInfo != null && nwInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
答
我们可以通过检查Internet连接来连接状态低于功能。 Google Android已更新Android API的功能来检查网络状态。现在在Android最新的API中,getAllNetworkInfo()已弃用。但getAllNetworks()函数仅适用于Build.VERSION.SDK_INT> = 21。我已经为所有情况编写了代码。
要检查互联网连接,您可以调用此函数。
public static boolean checkInternetConnection(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else if(Build.VERSION.SDK_INT >= 21){
Network[] info = connectivity.getAllNetworks();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i] != null && connectivity.getNetworkInfo(info[i]).isConnected()) {
return true;
}
}
}
} 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;
}
}
}
final NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
return true;
}
}
return false;
}
在飞行模式下设置模拟器后检查此代码 – vipin 2012-04-04 11:05:43
您尝试过'isAvailable()'或'isConnected()'吗? – olix20 2012-04-04 11:06:15
@vipin,在飞行中它在两种情况下都返回false ... – amp 2012-04-04 11:11:42