Im Moment hat die URL, auf die ich zugreife, in meiner App eine Umleitung. In diesem Fall öffnet das WebView einen neuen Browser, anstatt in meiner App zu bleiben. Kann ich die Einstellungen so ändern, dass die Ansicht wie gewohnt zur URL umleitet, aber in meiner App bleibt, anstatt einen neuen Browser zu öffnen?
Bearbeiten:
Ich möchte die Weiterleitungs-URL. Ich weiß nur nicht, wie ich sie erstellen soll. Der einzige Weg, um zu dieser URL zu gelangen, ist einer, der eine Weiterleitung zu der gewünschten URL bewirkt.
Beispiel: Wenn Sie hierher gehen: http://www.Amazon.com/gp/aw/s/ref=is_box_/k=9780735622777 Beachten Sie, wie die URL zum tatsächlichen Produkt umgeleitet wird. Wenn ich es in meiner App in einem neuen Browser öffne, ist das in Ordnung. Wenn ich es jedoch in meiner App mit einer WebView behalte, wird es so angezeigt, als würde nach k = 9780735622777 gesucht: http://www.Amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y= . ODER, es öffnet die Ansicht im Browser und zeigt an, was angemessen ist. Ich möchte jedoch alles in meiner App behalten.
Erstellen Sie einen WebViewClient und überschreiben Sie die Methode shouldOverrideUrlLoading .
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url){
// do your handling codes here, which url is the requested url
// probably you need to open that url rather than redirect:
view.loadUrl(url);
return false; // then it is not handled by default action
}
});
Laut der offiziellen Dokumentation startet ein Klick auf einen Link in WebView eine Anwendung, die URLs verarbeitet, die standardmäßig ein Browser ist. Sie müssen das Standardverhalten wie folgt überschreiben
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
Das Hinzufügen eines benutzerdefinierten WebViewClient
reicht aus. Dadurch kann das WebView alle geladenen URLs selbst verarbeiten.
mWebView.setWebViewClient(new WebViewClient());
Sie müssen Ihre benutzerdefinierte WebviewClient-Überschreibungsmethode shouldOverrideUrlLoading für Ihre Webansicht festlegen, bevor Sie die URL laden können.
mWebView.setWebViewClient(new WebViewClient()
{
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url)
{
return shouldOverrideUrlLoading(url);
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request)
{
Uri uri = request.getUrl();
return shouldOverrideUrlLoading(uri.toString());
}
private boolean shouldOverrideUrlLoading(final String url)
{
Log.i(TAG, "shouldOverrideUrlLoading() URL : " + url);
// Here put your code
return true; // Returning True means that application wants to leave the current WebView and handle the url itself, otherwise return false.
}
});
Überprüfen Sie den Beispielcode für die Verarbeitung von Weiterleitungs-URLs und öffnen Sie PDF ohne Download, in der Webansicht. https://Gist.github.com/ashishdas09/014a408f9f37504eb2608d98abf495
Erstellen Sie eine Klasse, die den Webviewclient implementiert, und fügen Sie den folgenden Code hinzu, der das Überschreiben der URL-Zeichenfolge wie unten gezeigt ermöglicht. Sie können diese sehen Beispiel
public class myWebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Erstellen Sie in Ihrem Konstruktor ein Webview-Objekt wie unten gezeigt.
web = new WebView(this); web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
Fügen Sie dann den folgenden Code hinzu, um das Laden von URLs in Ihre App durchzuführen
WebSettings settings=web.getSettings();
settings.setJavaScriptEnabled(true);
web.loadUrl("http://www.facebook.com");
web.setWebViewClient(new myWebClient());
web.setWebChromeClient(new WebChromeClient() {
//
//
}
Bitte benutzen Sie den folgenden Kotlin-Code
webview.setWebViewClient(object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return false
}
})
Für weitere Informationen klicken Sie auf hier