webentwicklung-frage-antwort-db.com.de

Android WebView-Klick in WebView öffnen, kein Standardbrowser

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

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

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;
    }
});
69
Terence Lui

Sie müssen einen WebViewClient einrichten, um dieses Verhalten zu überschreiben (Öffnen von Links mithilfe des Webbrowsers). Sie haben natürlich Ihr WebView deklariert, richten dann aber einen WebViewClient ein:

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

10
Mark Lyons

Ich stehe vor demselben Problem und habe es einfach behoben, indem ich einzelne Zeile hinzufügte.

webview.setWebViewClient(new WebViewClient());

und das hat mein Problem gelöst.

5
Syed_Adeel

Sie müssen wvBikeSite.setWebViewClient aufrufen, z.

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

Wo MyWebViewClient sollte overrideUrlLoading überschreiben, nämlich:

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

Sie können die URL immer innerhalb 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){

        }
    }    
1
saba

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;
            }
        }
    });
1
Ali

Versuchen Sie es mit dieser Methode, diese Methode ist veraltet.

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return super.shouldOverrideUrlLoading(view, request);
        }
1
Ashish Verma

Verwenden Sie diesen Code: 

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

Legen Sie den Webview-Client fest.

0
Pranav V R

Hier ist mein Code, um das obige Problem zu beheben (wenn Sie auf den Link klicken, der den Standardbrowser fordert, um den Link zu öffnen)

import Android.os.Bundle;import Android.annotation.SuppressLint;import Android.app.Activity;
import Android.view.Menu;import Android.webkit.WebChromeClient;
import Android.webkit.WebView;public class MainActivity extends Activity{
`@SuppressLint("SetJavaScriptEnabled")@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String url="http://google.com";WebView Webview=(WebView) this.findViewById(R.id.webView1);     Webview.getSettings().setJavaScriptEnabled(true);Webview.loadUrl(url);}@Override    public boolean onCreateOptionsMenu(Menu menu){//Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}`}
0
Sharan

Die Antwort ist größtenteils richtig, beachten Sie jedoch Folgendes: SupportMultipleWindows muss als false festgelegt werden.

mWebView.getSettings().setSupportMultipleWindows(false);

und setze jetzt webViewClint und lade die URL.

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){

    Log.d(TAG,"URL: "+url);
    view.loadUrl(url);

    /**
     * if you wanna open outside of app
     if (url != null && url.startsWith(URL)) {
     view.loadUrl(url);
     return false;
     }
     // Otherwise, give the default behavior (open in browser)
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     startActivity(intent);**/
    return true;

}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);
}

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);

    }
});
0

Dies öffnet einen bestimmten Link nur in Ihrer App ...

WebView web;

web = (WebView) findViewById(R.id.web);
web.setWebViewClient(new WebViewClient(){

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && url.startsWith("http://www.xplorerstrick.net")) {
            view.loadUrl(url);
            progDailog.show();
            return true;
        }
        else {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
}
0
Amrish Kakadiya