Android WebView在WebView中单击打开而不是默认浏览器
我使用WebView做了一个示例应用程序,在该Web视图中该URL来自Web服务。它工作正常,但如果我点击该WebView内的任何链接,它将自动转到默认的Web浏览器。但我只想在我的应用程序Web视图中打开。在这里我的代码:Android WebView在WebView中单击打开而不是默认浏览器
WvBikeSite = (WebView) findViewById(R.id.wv_bikeWebsite);
wvBikeSite.loadUrl(getBundle.getString("www"));
您必须为您的webV设置一个webViewClient IEW。
样品:
this.mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});
您可以使用此网页视图中始终打开网址:
@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){
}
}
你需要建立一个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());
我想这样也,现在它的工作的感谢马克·莱昂斯 – selva 2012-04-03 05:18:58
你需要调用wvBikeSite.setWebViewClient,如:
MyWebViewClient wvc = new MyWebViewClient();
wvBikeSite.setWebViewClient(wvc);
凡MyWebViewClient覆盖shouldOverrideUrlLoading,即:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
我面临同样的问题,我通过添加单行来修复它。
webview.setWebViewClient(new WebViewClient());
这解决了我的问题。
不需要制作WebViewClient的自定义子类。 – 2013-06-17 08:03:10
我不喜欢这个和它的工作完美..
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;
}
}
});
这里是我的代码如何解决上述问题(链路cliking它要求的默认浏览器OPN链接时)
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客户端。
试试这个,该方法已被弃用。
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
大多数的答案是正确的,但请注意:SupportMultipleWindows必须设置为假。
mWebView.getSettings().setSupportMultipleWindows(false);
现在设置webViewClint并获得加载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);
}
});
由于目前其工作正常 – selva 2012-04-03 05:18:21
这个作品!但有没有什么办法允许链接有目标= _blank加载浏览器,而不是? – mim 2014-11-18 12:15:50
@mim,如果它包含某个字符串,则可以解析url变量并返回false – 2014-12-04 19:29:35