Klicken Sie auf Android WebView, um es in WebView zu öffnen, nicht in einem Standardbrowser

Lesezeit: 3 Minuten

Klicken Sie auf Android WebView um es in WebView zu
Selva

Ich habe eine Beispielanwendung mit WebView erstellt, in dieser Webansicht stammt die URL von Webdiensten. Es funktioniert gut, aber wenn ich in dieser WebView auf einen Link klicke, wird automatisch der Standard-Webbrowser ausgewählt. Aber ich möchte nur die Webansicht meiner Anwendung öffnen. Hier mein Code:

WvBikeSite = (WebView) findViewById(R.id.wv_bikeWebsite);
wvBikeSite.loadUrl(getBundle.getString("www"));

Sie müssen einen webViewClient für Ihr webView einrichten.

Probe:

this.mWebView.setWebViewClient(new WebViewClient(){

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

  • das funktioniert! aber gibt es eine Möglichkeit, Links mit target=_blank stattdessen im Browser zu laden??

    – Mim

    18. November 14 um 12:15 Uhr

  • @mim, Sie können die URL-Variable analysieren und false zurückgeben, wenn sie eine bestimmte Zeichenfolge enthält

    – Steve Schwarcz

    4. Dezember 14 um 19:29 Uhr

  • shouldOverrideUrlLoading(WebView view, String url) ist veraltet. Siehe hier: stackoverflow.com/questions/7308904/…

    – DavidA

    31. Mai 18 um 22:05 Uhr

  • Dies ist ein Kommentar aus der Dokumentation zur Methode shouldOverrideUrlLoading………….Diese Methode wird nicht für Anfragen aufgerufen, die die POST-"Methode" verwenden.

  • *

  • Diese Methode wird ebenfalls aufgerufen Für Subframes mit Nicht-http-Schemata wird daher * dringend davon abgeraten, {@link WebView#loadUrl(String)} * bedingungslos mit der URL der Anfrage innerhalb der Methode aufzurufen und dann {@code true} zurückzugeben, * da dies zutrifft WebView versucht, eine Nicht-http-URL zu laden, und schlägt daher fehl.

    – Abhishek Kumar

    20. Juni 19 um 6:24 Uhr


  • Dies ist ein weiterer Absatz über die gleiche Methode aus der Dokumentation. Geben Sie der Host-Anwendung die Möglichkeit, die Kontrolle zu übernehmen, wenn eine neue *-URL in die aktuelle WebView geladen werden soll. Wenn WebViewClient nicht * bereitgestellt wird, fordert WebView Activity Manager standardmäßig auf, * den richtigen Handler für die URL auszuwählen. Wenn WebViewClient bereitgestellt wird, bedeutet return {@code true} *, dass die Hostanwendung die URL verarbeitet, während return {@code false} bedeutet, dass * die aktuelle WebView die URL verarbeitet.

    – Abhishek Kumar

    20. Juni 19 um 6:43 Uhr

  • 1642756986 17 Klicken Sie auf Android WebView um es in WebView zu
    Markus Lyon

    Sie müssen einen WebViewClient einrichten, um dieses Verhalten zu überschreiben (Öffnen von Links mit dem Webbrowser). Sie haben offensichtlich Ihr WebView deklariert, aber dann einen WebViewClient wie folgt eingerichtet:

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.setWebViewClient(new WebViewClient());
    

    Dann müssen Sie Ihren WebViewClient() definieren:

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("www.example.com")) {
                // Designate Urls that you want to load in WebView still.
                return false;
            }
    
            // Otherwise, give the default behavior (open in browser)
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
    

    Starten Sie dann Ihren WebViewClient:

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.setWebViewClient(new MyWebViewClient());
    

    http://developer.android.com/guide/webapps/webview.html

    Ich stehe vor dem gleichen Problem und habe es gerade behoben, indem ich eine einzelne Zeile hinzugefügt habe.

    webview.setWebViewClient(new WebViewClient());
    

    und das hat mein Problem gelöst.

    Sie müssen wvBikeSite.setWebViewClient aufrufen, zB:

        MyWebViewClient wvc = new MyWebViewClient();
        wvBikeSite.setWebViewClient(wvc);
    

    Wo MyWebViewClient überschreibt shouldOverrideUrlLoading, nämlich:

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

    Klicken Sie auf Android WebView um es in WebView zu
    Sri Krishna Chaitanya

    Verwenden Sie diesen Code:

    // Force links and redirects to open in the WebView instead of in a browser
    mWebView.setWebViewClient(new WebViewClient());       
    

    1642756987 927 Klicken Sie auf Android WebView um es in WebView zu
    saba

    Sie können die URL jederzeit in der Webansicht öffnen, indem Sie Folgendes verwenden:

          @Override
      public void onCreate(Bundle savedInstanceState) {
         webview.setWebViewClient(new MyWebViewClient());
     webview.getSettings().setJavaScriptEnabled(true);
     webview.getSettings().setPluginsEnabled(true);
         }
    
    
         private class MyWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
    
                view.loadUrl(url);
                return true;
            }
    
            @Override
            public void onLoadResource(WebView  view, String  url){
    
            }
        }    
    

    1642756987 718 Klicken Sie auf Android WebView um es in WebView zu
    Ali

    Ich mochte das und es funktioniert perfekt..

    mWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url != null && url.startsWith("http://")) {
                    mWebView.loadUrl(url);
                    return true;
                } else {
                    return false;
                }
            }
        });
    

    .

    574010cookie-checkKlicken Sie auf Android WebView, um es in WebView zu öffnen, nicht in einem Standardbrowser

    This website is using cookies to improve the user-friendliness. You agree by using the website further.

    Privacy policy