android引用X5内核webview部分问题记录
1.问题:
x5内核初始化 报110,或者加载失败需要第二次进入才成功。
解决方案:
初始化位置建议不要放在application 放在首页activity。
2.问题:
scrollview嵌套后webview的高度不可控。留有大片空白。
解决方案:
(官方不建议scrollview嵌套webview 最好让webview自身滚动)
富文本加载可直接改变富文本将想加入的内容加入 减少层级 从而不使用scrollview
富文本最好带有<html>标签 没有可以代码加入
private String getHtmlData(String bodyHTML) {String head = "<head>" +"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " +"<style>img{max-width: 100%; width:auto; height:auto;}" +"video{max-width: 100%; width:auto; height:auto;}</style>" +"</head>";return "<html>" + head + "<body>" + bodyHTML + "</body></html>";}
网页加载可选择原生的webview。
3.问题
webview视频播放 使用x5内核的好处就是自带封面处理。全屏切换。
contentWeb.setWebChromeClient(new WebChromeClient() {@Overridepublic View getVideoLoadingProgressView() {FrameLayout frameLayout = new FrameLayout(StudyContentActivity.this);frameLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));return frameLayout;}@Overridepublic void onShowCustomView(View view, IX5WebChromeClient.CustomViewCallback callback) {showCustomView(view, callback);//播放时横屏幕}@Overridepublic void onHideCustomView() {hideCustomView();//不播放时竖屏}});}
private void showCustomView(View view, IX5WebChromeClient.CustomViewCallback callback) {if (customView != null) {callback.onCustomViewHidden();return;}StudyContentActivity.this.getWindow().getDecorView();FrameLayout decor = (FrameLayout) getWindow().getDecorView();fullscreenContainer = new FullscreenHolder(StudyContentActivity.this);fullscreenContainer.addView(view, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));decor.addView(fullscreenContainer, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));customView = view;setStatusBarVisibility(false);customViewCallback = callback;customView.setVisibility(View.VISIBLE);decor.setVisibility(View.VISIBLE);decor.bringToFront();}
/*** 隐藏视频全屏*/private void hideCustomView() {if (customView == null) {return;}setStatusBarVisibility(true);FrameLayout decor = (FrameLayout) getWindow().getDecorView();decor.removeView(fullscreenContainer);fullscreenContainer = null;customView = null;customViewCallback.onCustomViewHidden();contentWeb.setVisibility(View.VISIBLE);}
/*** 全屏容器界面*/static class FullscreenHolder extends FrameLayout {public FullscreenHolder(Context ctx) {super(ctx);setBackgroundColor(ctx.getResources().getColor(android.R.color.black));}@Overridepublic boolean onTouchEvent(MotionEvent evt) {return true;}}
重写返回事件
@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_BACK:/** 回退键 事件处理 优先级:视频播放全屏-网页回退-关闭页面 */if (customView != null) {hideCustomView();} else if (contentWeb.canGoBack()) {contentWeb.goBack();} else {finish();}return true;default:return super.onKeyUp(keyCode, event);}}
4.问题
预览pdf、word等文档类型。需要先下载下来再预览。
打开前本着以防万一的心态再检查一遍内核是否初始化成功。失败也有失败的打开方式
if (x5WebViewExtension != null) {Intent intent = new Intent(this, SourcesPreviewActivity.class);intent.putExtra("info", stateBean.fileInfoBean);startActivity(intent);
} else {QbSdk.openFileReader(context, stateBean.fileInfoBean.getFile().getPath(), null, null);
}
sourcesPreviewActivity内动态添加TbsReaderView bsReaderTemp为预览的临时路径
bsReaderTemp = Environment.getExternalStorageDirectory() + "/TbsReaderTemp";File bsReaderTempFile = new File(bsReaderTemp);if (!bsReaderTempFile.exists()) {boolean mkdir = bsReaderTempFile.mkdir();if (!mkdir) {}}Bundle localBundle = new Bundle();localBundle.putString("filePath", fileInfoBean.getFile().getPath());localBundle.putString("tempPath", bsReaderTemp);if (this.mTbsReaderView == null) {mTbsReaderView = new TbsReaderView(this, (integer, o, o1) -> {});contentCon.addView(mTbsReaderView, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT));}boolean bool = this.mTbsReaderView.preOpen(getFileType(fileInfoBean.getFile().getPath()), false);if (bool) {this.mTbsReaderView.openFile(localBundle);} else {QbSdk.clearAllWebViewCache(this, true);}
android引用X5内核webview部分问题记录相关推荐
- debug5x 微信_微信X5内核webview调试
title: 微信X5内核webview调试 date: 2015-12-15 03:51 comments: true tags: [debug, webview, 微信] 题记 记得在简书中很早就 ...
- android 集成x5内核时 本地没有,腾讯浏览服务-接入文档
三.SDK集成步骤 1. 第一步 下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类,具体对应如下: 系统内核 SDK内核 android.webki ...
- x5内核 ajax base64,腾讯X5内核 WebView 实践篇
基于腾讯 X5 内核的WebView开发: 1.onPageFinished 2.onProgressChanged() 3.合适的时机获取页面元素 业务需求是在 html 中注入 js脚本实现阅读模 ...
- Android中使用x5内核加载网页的实现
前言 联系方式 背景 SDK下载 SDK集成 使用 代码实现 前言 由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统. 联系 ...
- Android WebView相册选取图片及集成(X5内核,crosswalk)
webview加载商城连接地址,系统webview的加载商城里的一个分类页面卡顿,其余页面正常. 自己写webview显然不现实,继承系统的写出来效果还是如此,然后就集成了腾讯X5的内核. TBS(腾 ...
- android x5 webview报错,appium 混合 APP,x5 内核,webview 切换报错
前言:15 号左右,开发和我说搞了一个高逼格的东西,亲儿子换成 QQx5 的内核了,然后我这边发现____以前可以直接定位的,现在更换 x5 内核之后 H5 页面的元素竟然 switch_to.con ...
- Android的WebView如何播放视频和全屏视频(腾讯X5内核)
WebView如何播放视频和全屏视频 前言 1. 接入SDK 2. 具体场景和代码实现 3. 踩坑 3.1 android.system.ErrnoException: chmod failed: E ...
- Android 抛弃原生WebView,使用腾讯X5内核、并加入广告拦截。
大家都不知道原生的WebView 存在各种坑.各种适配问题. 最近在使用,总会出现DNS被拦截的情况.预览了各个大神的论坛与博客. 发现可以更改WebView内核.找到了比较火的两个. 分别是:腾讯X ...
- android腾讯x5播放器,腾讯x5内核浏览器WebView调起微信支付,以及实现x5内核视频播放...
1.新建项目在app目录下新建文件夹libs,用于导入腾讯内核jar依赖包 图片发自简书App 2.main目录下新建jniLibs文件夹,用于存放x5内核的.so文件,播放视频用. 图片发自简书Ap ...
- android内核网络缓存,Android WebView cache 缓存 腾讯X5内核在线视频播放
[实例简介] Android WebView cache 缓存 腾讯X5内核在线视频播放 [实例截图] [核心代码] Terry007 └── Terry007 ├── AndroidManifest ...
最新文章
- 笔记,提醒,pytorch安装命令(conda)
- java 判断是否是list_给Java程序员的20个链表面试题
- 速冻果蔬青麦源品牌-农业大健康·李喜贵:谋定功能性技术
- GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09
- Java 并发编程—Synchronized关键字
- 项目周期一般多久_办公家具定制的特殊性是需要一定的制作周期
- jboss eap 7_使用JBoss EAP 7的HTTP / 2
- Android开发群
- oracle中只存储两年数据,Oracle中作为永久存储机制的嵌套表的数据追加
- 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_原理---大数据之hadoop工作笔记0074
- iphone4 Safari实现滚动条功能
- 【共读Primer】8.[2.1] 基本内置类型(2) Page32
- 无线投影服务器连接投影仪,无线投屏器怎么与投影机连接
- 百度指数 数据分析(介绍)
- 微信小程序的APPID问题
- linux环境下,mysql数据库的完美卸载!(亲测)
- 【算法练习】POJ - 3683 Priest John's Busiest Day (2-SAT)
- 微型计算机外部设备接口,第五章 微型计算机输入输出接口
- JAVA基础算法练习(2):猜年龄
- 机器学习(2)——周志华