付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】AndroidWebView拦截iframe标签内部跳转的示例分析
在下给大家分享一下AndroidWebView拦截iframe标签内部跳转的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。最近项目里有个广告位需要动态配置,后台给了一段html嵌套iframe标签的代码,需要Android拦截iframe内部的跳转,自己做处理。比如,下面是一段html代码,嵌套这iframe标签,src就是跳转地址,我现在就要当你点击该网址的时候做拦截,自己做处理而不是跳转。<html>
<iframe
src="/"
frameborder='0'
scrolling='no'
width='100%'
height='300'>
</iframe>
</html>oh,我还是第一次知道iframe标签,不过想着应该和普通拦截h6差不多,兴致勃勃的就开始撸代码了,但是无论怎么配置WebView,还是重写shouldOverrideUrlLoading,就是拦截不了iframe里的网址。。。后来研(bai)究(du)了很久,终于拦截到了。实现方法:首先,你的WebView要setWebViewClient,重写public
boolean
shouldOverrideUrlLoading(WebView
view,
WebResourceRequest
request)
{}
方法,然后setWebChromeClient,重写onCreateWindow方法,在里面创建新的WevView,加入到webView里,给新的webView
setWebViewClient,再重写shouldVeerrideUrlLoading方法,在这里拦截。
webView.setWebChromeClient(new
WebChromeClient(){
@Override
public
boolean
onCreateWindow(WebView
webView,
boolean
isDialog,
boolean
isUserGesture,
Message
resultMsg)
{
WebView
newWebView
=
new
WebView(getActivity());
webView.addView(newWebView);
WebView.WebViewTransport
transport
=
(WebView.WebViewTransport)
resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new
WebViewClient(){
@Override
public
boolean
shouldOverrideUrlLoading(WebView
webView,
String
url)
{
//TODO
在这里实现你的拦截方法
if
(url.contains("")){
toast("拦截到了"
+
url);
Intent
intent
=
new
Intent(getActivity(),
CommonWebViewActivity.class);
intent.putExtra("url",url);
startActivity(intent);
}else
{
webView.loadUrl(url);
}
return
true;
}
});
return
true;
}
});完整的代码如下:private
void
initWebView(WebView
webView)
{
//启用支持javascript
WebSettings
settings
=
webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setSupportZoom(false);
//支持缩放
settings.setBuiltInZoomControls(false);
//支持手势缩放
settings.setDisplayZoomControls(false);
//是否显示缩放按钮
settings.setDefaultTextEncodingName("utf-8");
//设置文本编码
settings.setUseWideViewPort(false);
//将图片调整到适合WebView的大小
settings.setLoadWithOverviewMode(true);
//自适应屏幕
settings.setDomStorageEnabled(true);
settings.setSaveFormData(true);
settings.setSupportMultipleWindows(true);
settings.setAppCacheEnabled(true);
settings.setPluginState(WebSettings.PluginState.ON);//支持插件
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
//不适用缓存
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局
webView.setOverScrollMode(View.OVER_SCROLL_NEVER);
//
取消WebView中滚动或拖动到顶部、底部时的阴影
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
//
取消滚动条白边效果
//
>=
19(SDK4.4)启动硬件加速,否则启动软件加速
if
(Build.VERSION.SDK_INT
>=
Build.VERSION_CODES.KITKAT)
{
webView.setLayerType(View.LAYER_TYPE_HARDWARE,
null);
settings.setLoadsImagesAutomatically(true);
//支持自动加载图片
}
else
{
webView.setLayerType(View.LAYER_TYPE_SOFTWARE,
null);
settings.setLoadsImagesAutomatically(false);
}
webView.setWebViewClient(new
WebViewClient()
{
@Override
public
void
onLoadResource(WebView
view,
String
url)
{
super.onLoadResource(view,
url);
Log.w("webView==onLoadResource===url="
+
url);
}
@Override
public
void
onReceivedSslError(WebView
webView,
SslErrorHandler
sslErrorHandler,
SslError
sslError)
{
sslErrorHceed();
//
接受所有网站的证书
}
@Override
public
boolean
shouldOverrideUrlLoading(WebView
view,
WebResourceRequest
request)
{
if
(request.getUrl().toString().contains("")){
toast("拦截到了baidu");
}else
{
webView.loadUrl(request.getUrl().toString());
}
return
true;
}
});
webView.setWebChromeClient(new
WebChromeClient(){
@Override
public
boolean
onCreateWindow(WebView
webView,
boolean
isDialog,
boolean
isUserGesture,
Message
resultMsg)
{
WebView
newWebView
=
new
WebView(getActivity());
webView.addView(newWebView);
WebView.WebViewTransport
transport
=
(WebView.WebViewTransport)
resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new
WebViewClient(){
@Override
public
boolean
shouldOverrideUrlLoading(WebView
webView,
String
url)
{
if
(url.contains("//")){
toast("拦截到了"
+
url);
Intent
intent
=
new
I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能工装夹具设计师岗位招聘考试试卷及答案
- 城市桥梁养护技师考试试卷及答案
- 城市地下综合管廊运维技师考试试卷及答案
- 2026及未来5年中国智能养老行业市场现状调查及未来趋势研判报告
- 区块链技术保障围手术期教育数据安全
- 植物除尘活动方案策划(3篇)
- 新城串串活动策划方案(3篇)
- 公司置换物品管理制度(3篇)
- 日产调研活动方案策划(3篇)
- 宠物乐园施工方案(3篇)
- 2026年春冀人版(新教材)小学科学三年级下册(全册)教学设计(附教材目录P142)
- 苏科版(2024)七年级上册数学期末考试全真模拟测试卷1(含答案)
- 门诊护理中的PDCA循环:提升患者满意度
- 绿电交易课件教学
- 2025 年本科智能采矿技术(智能采矿系统)试题及答案
- 自然资源行政执法考试题库及完整答案
- 非静脉曲张上消化道出血患者行内镜下急诊止血治疗的护理配合
- 北师大介绍课件
- 规范手卫生培训课件
- 粉笔线上协议班 合同
- 警用盾牌使用方法
评论
0/150
提交评论