2017-12-26 7 views
0

私のアプリケーションでは、携帯電話がインターネットに接続されているかどうか、WIFIまたはモバイルデータ接続を使用しているかどうかを確認しています。デバイスはWIFIに接続されています。ブール唯一のfalseを返すインターネット接続をチェックする方法

ここでは、インターネット接続を調べるコードを示します。

public class InternetDetector { 
    private Context mcontext; 

public InternetDetector(Context context) { 
    this.mcontext = context; 
} 


    public boolean checkMobileInternetConn() { 
     ConnectivityManager connectivity = (ConnectivityManager) mcontext 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     if (connectivity != null) { 
      NetworkInfo info = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

      if (info != null) { 
       if (info.isConnected()) { 
        return true; 
       } 
      } 
     } 

     else if (connectivity != null) { 
      NetworkInfo info = connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

      if (info != null) { 
       if (info.isConnected()) { 
        return true; 
       } 
      } 
     } 


     return false; 
    } 


} 

と、これは私はコードは、常に他の部分に行くといつもトーストを示しているconnection.Butをチェックするために他の活動でこのクラスを使用しています方法です。私は、マニフェストファイルの下に与えられている

if (allValid) { 

     isConnectionExist = internetDetector.checkMobileInternetConn(); 
      if (isConnectionExist) { 

       try { 
        new MyAsyncClass().execute(); 

        } catch (Exception ex) { 
        Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_SHORT).show(); 
          } 

         } else { 
          Toast.makeText(getApplicationContext(), "No Internet Connection", Toast.LENGTH_SHORT).show(); 
         } 


        } 

権限は以下のとおりです。 -

<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" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 
+0

[Android:3G/WifiネットワークがオンかAndroidデバイスで使用可能かどうか](https://stackoverflow.com/questions/11343249/android-check-3g-or-wifi- network-on-on-or-on-and-on-android-device) –

答えて

0

代替ソリューション:

public boolean hasConnectivity() { 
     ConnectivityManager connectivityManager = (ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo(); 
     return activeNetwork != null; 
} 
+0

ブール値のメソッドはtrueかfalseで結果を返すと思われます。どうすれば私のコードでこれを使うことができるのか説明してください。 –

+0

下の別のスレッドで自分の答えをチェックしてください –

0

は私がisConnectionExist変数hasConnectivity()

に置き換えます
if (allValid) { 


     if (hasConnectivity()) { 

      try { 
       new MyAsyncClass().execute(); 

       } catch (Exception ex) { 
       Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_SHORT).show(); 
         } 

        } else { 
         Toast.makeText(getApplicationContext(), "No Internet Connection", Toast.LENGTH_SHORT).show(); 
        } 


       } 
0
fun isOnline(context: Context): Boolean { 
     try { 
      val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager 
      val nInfo = cm.activeNetworkInfo 
      return nInfo != null && nInfo.isConnected 
     } catch (e: Exception) { 
      e.printStackTrace() 
      return false 
     } 

    } 
関連する問題