2017-02-20 14 views
0

インターネット接続があるかどうかを検出するためのコードは次のとおりです。しかし、私はインターネット接続がない場合、データ接続のみが "ON"であり、それでも動作します。私は何をすべきか?アンドロイドスタジオでインターネット接続を検出する方法

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

チェック: 'Toast.makeTextを(この、 "利用可能な:" + 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"/> 
関連する問題