我刚刚开始开发Android应用程序,所以我需要一些易于理解的webview应用程序的帮助。所以,这是我的具体问题:
如何强制webview应用在其中打开链接,而不是根据域在默认浏览器中打开它们?
请在回答中附上此代码的已编辑/扩展版本:
public class WebViewActivity extends Activity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("www.example.com");
我想在webview中打开其内容的域名是:www.qwerty.com默认浏览器应该打开所有其他链接。
非常感谢提前。
答案 0 :(得分:4)
您必须创建WebViewClient
:
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
然后将其设置为WebView
,如下所示:
webview.setWebViewClient(new MyWebViewClient());
答案 1 :(得分:2)
您必须评估自定义WebViewClient
中传递的网址。
boolean shouldOverrideUrlLoading
具有true和false值。
当 true 时,您将网址发送到浏览器,当 false 时,您会留在WebView
。
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.qwerty.com")) {
/*
This is my web site, so do not override;
let my WebView load the page
*/
return false;
}
/*
Otherwise, the link is not for a page on my site,
so launch another Activity that handles URLs
*/
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
然后,从您的活动中,您确实呼叫新的WebClient
webview.setWebViewClient(new MyWebViewClient());