2017-11-04 3 views
1

Meine Android Studio App muss eine Offline-Site zeigen, wenn keine Internetverbindung besteht. Und zeigen Sie eine Online-Website, wenn die Internetverbindung aktiv ist.Prüfen, ob die Website erreichbar ist

Jetzt suche ich nach der Funktion, wenn eine Internetverbindung aktiv ist, wird die Online-Site jetzt angezeigt. Wenn ich jetzt die Internetverbindung deaktiviere muss sie die Offline Seite wieder anzeigen und nicht die Standard "Fehler Seite ist nicht verfügbar" - Fehlerseite. Wie behebt man das?

WebView wb; 

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

    wb = (WebView) findViewById(R.id.mywb); 
    wb.setWebViewClient(new MyBrowser()); 

    if (!isNetworkAvailable()) { // loading offline 
     wb.loadUrl("file:///android_asset/index.html"); 

    }else { // loading online 
     wb.loadUrl("http://www.google.com"); 
    } 


} 

private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

private class MyBrowser extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

Antwort

0

Sie haben es fast: einfach den Unterschied in der WebViewClient hinzuzufügen, wenn eine neue Webseite geladen werden.

private class MyBrowser extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (!isNetworkAvailable()) { // loading offline 
      view.loadUrl("file:///android_asset/index.html"); 
     } 
     else { // loading online 
      view.loadUrl(url); 
     } 
     return true; 
    } 
    } 
+0

Leider funktioniert das nicht, wenn ich auf eine Submit-Schaltfläche im WebView klicke. Es zeigt die Standard-Fehlerseite –

+0

Sieht so aus, als hätte die App einige Probleme mit

, die in Webviews verwendet werden ... Immer wenn ich auf eine Schaltfläche in einem Formularfeld klicke, wird die Standard Fehlerseite angezeigt. –

+0

hast du Javascript aktiviert? Wenn das Formular eine andere Website öffnet, wird es durch den Webview-Client geleitet. – Robert