webview对于
new window
这种形式的tag,会要求起一个新窗口打开,而要截获这个请求,则可以在webChromeClient的onCreateWindow()回调函数中进行处理,
今天有个小的需求是,获知打开的新window的url,本以为很简单,谁知道webChromeClient比较SB,全部信息都被包在一个message里,
根本取不到url,搜了老半天,只在stackoverflow中有一个比较hack的方法:
http://stackoverflow.com/questions/15368885/android-webview-determine-a-target-blank
mWebView.setWebChromeClient(new WebChromeListener() {
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
WebView newWebView = new WebView(view.getContext());
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
});
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: MySQL的varchar存储原理:InnoDB记录存储结构
摘要:varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dyn…