user3365415
user3365415

Reputation: 1

shouldOverrideUrlLoading(WebView view, String url) is wrong?

I wanted to write a small webview code for a mobile version. Everything works, but sometimes I can't open a link. I guess there is a mistake on the shouldOverrideUrlLoading.

I do this "?mt=1" to force the mobile version of the website.

Thank you for your help.

Best wishes Dominik

package com.webview.atmclassicparts;

import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        webView = new WebView(MainActivity.this);
        setContentView(webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setUserAgentString("Android 4.2.2");
        webView.loadUrl("http://www.***.de/index.php?mt=1");
        webView.setWebViewClient(new WebViewClient(){
            public boolean shouldOverrideUrlLoading(WebView view, String url) 
            {
                if(!url.toLowerCase().contains("http://www.***.de"))
                {
                    String url2 = url + "?mt=1";
                    return true;
                }
            return false;
                }
            });

    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Prüfen, ob wirklich Zurück gedrückt wurde und ob vorher Seiten besucht wurden
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        // Wenn es nicht die Zurück-Taste war oder keine Seitenhistory verfügbar ist, wird die Default-    Methode ausgeführt. Meist ist dass das Beenden der Aktivität
        return super.onKeyDown(keyCode, event);
    }
}

Upvotes: 0

Views: 803

Answers (1)

marcin.kosiba
marcin.kosiba

Reputation: 3231

You're not forcing the mobile version of your site, you're ignoring that call.

    webView.setWebViewClient(new WebViewClient(){
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            if(!url.toLowerCase().contains("http://www.***.de"))
            {
                String url2 = url + "?mt=1";
                view.loadUrl(url2); // <<--- you were missing this
                return true;
            }
            return false;
        }
    });

Upvotes: 1

Related Questions