2017-02-20 72 views
0

我有以下代碼來檢測是否有互聯網連接可用或不。但如果我沒有互聯網連接,只有數據連接是「開」,它仍然有效。我該做什麼?如何檢測Android工作室的互聯網連接

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(); 
    } 
+0

你有沒有在清單'INTERNET'和'ACCESS_NETWORK_STATE'許可? – Marat

+0

您實際上必須撥打網絡電話才能查看互聯網連接是否可用。檢查Android連接的連接是否可以重複[如何以編程方式檢查網絡連接的可用性]( –

+0

)檢查Android識別哪個連接:'Toast.makeText(this,「Available:」+ ninfo.getTypeName(),Toast.LENGTH_LONG).show();' –

回答

0

使用此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)){ 

} 
0

使用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"/>