Android WebView在WebView中单击打开,而不是默认浏览器

我使用WebView做了一个示例应用程序,在该Web视图中,URL来自Web服务。 它工作正常,但如果我点击该WebView内的任何链接,它会自动进入默认的Web浏览器。 但是我只想在我的应用程序Web视图中打开。 在这里我的代码:

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

Solutions Collecting From Web of "Android WebView在WebView中单击打开,而不是默认浏览器"

您必须为您的webView设置一个webViewClient。

样品:

 this.mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ view.loadUrl(url); return true; } }); 

您需要设置WebViewClient以覆盖该行为(使用Web浏览器打开链接)。 你显然已经声明了你的WebView,但是这样设置一个WebViewClient:

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

那么你需要定义你的WebViewClient():

 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; } } 

然后启动您的WebViewClient:

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

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

我面临同样的问题,我只是通过添加单行来修复它。

 webview.setWebViewClient(new WebViewClient()); 

这解决了我的问题。

你需要调用wvBikeSite.setWebViewClient,例如:

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

MyWebViewClient覆盖应该覆盖UrlLoading,即:

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

您可以使用以下方法在webview中始终打开url:

  @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){ } } 

我喜欢这个,它的工作完美..

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

试试这个,这个方法已经被弃用了。

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

这里是我的代码如何解决上述问题(当在链接上请求默认浏览器closures链接时)

 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;}`} 

这将只在您的应用程序中打开任何特定的链接…

 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; } } } 
 webview.setWebViewClient(new WebViewClient()); webview.loadUrl(url); 

设置webview客户端。