我在Android中创建了一个用于显示网站的活动。我用了这段代码:
private WebView mWebview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mWebview = new WebView(this);
mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
mWebview.loadUrl("http://blablabla");
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
setContentView(mWebview);
但是当我将它用于例如www.bild.de或其移动版本wap.bild.de时,它会触发标准浏览器并从我的应用程序中退出。如果我点击该网站的链接,也是如此。我不希望这样。我究竟做错了什么?感谢。
答案 0 :(得分:2)
你并没有真正做任何事情"错误"。默认情况下,链接点击和重定向会显示用户选择的Web浏览器,而不是将其保留在WebView
内。
要解决此问题,您需要通过WebViewClient
向WebView
添加setWebViewClient()
实施。您的WebViewClient
子类需要覆盖shouldOverrideUrlLoading()
来处理您希望保留在WebView
中的任何网址:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (/* url is one you want to keep in the WebView */) {
view.loadUrl(url);
return(true);
}
return(false);
}
答案 1 :(得分:1)
我刚刚在手机上的测试项目中运行了你的代码,它在加载第一页时似乎运行正常。它首次加载了wap.bild.de而没有任何问题。
但是,我确实遇到了点击链接时启动默认浏览器的问题。要解决此问题,只需添加以下行:mWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url); // open link in the same web view.
return true;
}
});