2016-05-29 4 views
0

を使用してアンドロイドでインターネット接続を確認する。)あなたが<strong>アンドロイド</strong>に<strong>インターネット接続</strong>を確認したい場合は例えば その行う方法がたくさんあるgetActiveNetworkInfo

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 

     } 
     return false; 
    } 

getAllNetworkInfo(;はAPIレベル23で廃止されましたので、私は、インターネット接続の両方のAPIレベル23と前をチェックするソリューションを必要とする、私は

private boolean isConnectedToInternet() 
{ 
    ConnectivityManager cm = (ConnectivityManager) SplashActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
     if (activeNetwork != null) { // connected to the internet 
      if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { 
       // connected to wifi 
       Toast.makeText(SplashActivity.this, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show(); 
       return true; 
      } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { 
       // connected to the mobile provider's data plan 
       Toast.makeText(SplashActivity.this, activeNetwork.getTypeName(), Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     } 
    return false; 
} 

私の質問はgetActiveNetworkInfo()とをisConnected()のドキュメントうとしていることを行うために別の方法を見つけましたこの方法のためにGoogleが提供することは、現在アクティブなデフォルトのデータネットワークの詳細を返します

here

です。接続されている場合、このネットワークは発信接続のデフォルトルートです。ネットワークトラフィックを開始する前に、常にisConnected()をチェックする必要があります。デフォルトのネットワークがない場合、nullが返される場合があります。

は、なぜ我々は、返された場合、我々は他のインターネット接続を持ってnullでない場合、我々はヌルでgetActiveNetworkInfo()から返された値を確認することができますが、インターネット接続をチェックするためgetActiveNetworkInfo()をisConnected()を呼び出す必要がありますgetActiveNetworkInfo()でisConnected()を呼び出すとnullポインタ例外が実行時にスローされますか?

+0

[Android上で利用可能なインターネット接続があるかどうかを検出](https://stackoverflow.com/questions/4238921/detect-whether-there-isの可能性のある重複-an-internet-connection-on-android) –

答えて

4

私のutilのクラスを使用します。

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.Network; 
import android.net.NetworkInfo; 

/** 
* Created by ozgur on 16.04.2016. 
*/ 
public class Utils { 

    public static boolean isConnected(Context context){ 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 

      Network[] activeNetworks = cm.getAllNetworks(); 
      for (Network n: activeNetworks) { 
       NetworkInfo nInfo = cm.getNetworkInfo(n); 
       if(nInfo.isConnected()) 
        return true; 
      } 

     } else { 
      NetworkInfo[] info = cm.getAllNetworkInfo(); 
      if (info != null) 
       for (NetworkInfo anInfo : info) 
        if (anInfo.getState() == NetworkInfo.State.CONNECTED) { 
         return true; 
        } 
     } 

     return false; 

    } 
} 
+0

パーフェクト!どうもありがとうございます !! – BSQ

関連する問題