2014-06-20 103 views
2

我想讓應用程序檢查互聯網連接,如果它離線,重定向到webview中的離線html文件。那是什麼我不知道的是如何讓用戶重試或取消並退出應用程序..Android檢查互聯網連接,重試或離線時退出

這是我的代碼:

import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 
import android.app.Activity; 
import android.os.Bundle; 
//import android.view.Menu; 
//import android.view.MenuItem; 
import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.widget.Toast; 
import android.view.KeyEvent; 

public class MainActivity extends Activity { 
WebView browser; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // find the WebView by name 
    browser=(WebView)findViewById(R.id.wvwMain); 

    // Enable javascript 
    browser.getSettings().setJavaScriptEnabled(true); 

    // Set WebView client 
    browser.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
       } 
     }); 

    // Load the webpage 
     ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo nf=cn.getActiveNetworkInfo(); 

     if(nf != null && nf.isConnected()==true) 
     { 
      browser.loadUrl("http://website.com/"); 
      } 
     else 
     { 
      Toast.makeText(this, "Network Not Available", Toast.LENGTH_LONG).show(); 
      browser.loadUrl("file:///android_asset/noconnection.html"); 
     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && browser.canGoBack()) { 
      browser.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 
+0

加載HTML文件後,您可以顯示對話框消息。在這個對話框中,你可以有重試和退出按鈕。關於重試==>只要重複你剛剛使用的程序,只需移除else部分即可加載HTML。 –

回答

3

你必須要實現的東西就像一個按鈕,讓用戶重試。 然後當你注意到沒有連接時,顯示按鈕並重新點擊。

有用的一般,創建一個utils類來檢查你是否連接。

public class ConnectionUtils { 

public static boolean isConnected(Context context){ 
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    NetworkInfo mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if ((wifiInfo != null && wifiInfo.isConnected()) || (mobileInfo != null && mobileInfo.isConnected())) { 
      return true; 
    }else{ 
      return false; 
    } 
} 

}

然後你就可以隨時調用ConnectionUtils.isConnected(this)ConnectionUtils.isConnected(getActivity)

3

試試這個檢查連接

public boolean isConnectedToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager)getApplicationContext().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; 
} 

然後在任何你想要檢查連通性的地方使用它。

if(isConnectedToInternet()) 

{ 
    if(tCommentsFlag != 1) 
    { 
     // Your code 

    } 
} 

要退出Android應用程序使用此:

finish();