[英]how to detect internet connection in android studio
我有以下代碼來檢測是否有互聯網連接可用。 但是,如果我沒有互聯網連接,則只有數據連接處於“開”狀態,它仍然有效。 我該做什么?
ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo ninfo = cManager.getActiveNetworkInfo();
if(ninfo!=null && ninfo.isConnected())
{
Toast.makeText(this, "Available",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "Not Available",Toast.LENGTH_LONG).show();
}
使用此NetworkUtils
類:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetworkUtils {
private static int TYPE_WIFI = 1;
private static int TYPE_MOBILE = 2;
private static int TYPE_NOT_CONNECTED = 0;
public static int getConnectivityStatus(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI
&& networkInfo.getState() == NetworkInfo.State.CONNECTED) {
return TYPE_WIFI;
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE
&& networkInfo.getState() == NetworkInfo.State.CONNECTED) {
return TYPE_MOBILE;
}
}
return TYPE_NOT_CONNECTED;
}
public static boolean isNetworkConnected(Context context) {
int networkStatus = getConnectivityStatus(context);
if (networkStatus == TYPE_WIFI || networkStatus == TYPE_MOBILE) {
return true;
} else {
return false;
}
}
}
像這樣使用:
if(NetworkUtils.isNetworkConnected(this)){
}
使用ConnectivityManager
類。 這是java類:
ConnectivityManager manager =(ConnectivityManager) getApplicationContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
if (null != activeNetwork) {
if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI){
//we have WIFI
}
if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE){
//we have cellular data
}
} else{
//we have no connection :(
}
不要忘記在AndroidManifest.xml
請求權限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.