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"));
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;
}
});
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());
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.
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;
}
}
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){
}
}
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;
}
}
});
Versuchen Sie es mit dieser Methode, diese Methode ist veraltet.
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
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.
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;}`}
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);
}
});
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;
}
}
}