2016-03-07 103 views
0

我和我的朋友一起建立了一個需要互聯網連接運行的android應用程序。這是我們的第一個應用程序,我們只是初學者,非常感謝堆棧溢出。它幫助了我們很多。如何檢測互聯網在android熱點網絡連接

所以我用下面的代碼來檢測連接

public class ConnectionDetector { 

private Context _context; 

public ConnectionDetector(Context context){ 
    this._context = context; 
} 

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; 
    } 
} 

而在濺活性所用的方法如下:

cd = new ConnectionDetector(getApplicationContext()); 

      if (cd.isConnectingToInternet()) { 
       Intent intent = new Intent(SplashActivity.this, Home.class); 
       SplashActivity.this.startActivity(intent); 
       SplashActivity.this.finish(); 
      } else { 
       Toast.makeText(SplashActivity.this, "No Internet Connection. Press back to exit", Toast.LENGTH_SHORT).show(); 
       finish(); 
      } 

所以問題是當移動終端連接到移動數據工作正常,但當它連接到熱點網絡時,它只能檢測網絡連接而不是互聯網。

所以這些方法返回true,它會轉到下一個活動並且應用程序崩潰。

有什麼辦法解決這個問題嗎?

我只是想讓我的應用程序不應該崩潰。

+1

Check [this](http://stackoverflow.com/questions/17717749/check-for-active-internet-connection-android)out。 –

回答

1

可能會幫助你。

public boolean isInternetConnected(Context context) { 
      ConnectivityManager cm = (ConnectivityManager) context.getSystemService 
        (Context 
          .CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      return activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
     } 
+0

抱歉,這對我不起作用 –