amp*_*amp 12 connection networking android
在我在模拟器上测试的应用程序中,我使用以下代码检查网络连接(WIFI):
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
true即使我禁用了计算机的无线连接,此方法也始终返回...这是由模拟器引起的还是其他原因?
如果这不是检查网络连接的正确方法,我该怎么办?
Nis*_*ant 36
最好(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;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
要使getActiveNetworkInfo()生效,您需要将以下内容添加到清单中.
1. uses-permission android:name="android.permission.INTERNET"
2. uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
Run Code Online (Sandbox Code Playgroud)
最好使用netInfo.isConnected()而不是netInfo.isConnectedOrConnecting
并试试这个
Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
Run Code Online (Sandbox Code Playgroud)
要么
Context.getSystemService(Context.CONNECTIVITY_SERVICE).requestRouteToHost(TYPE_WIFI, int hostAddress)
Run Code Online (Sandbox Code Playgroud)