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部分问题记录相关推荐

  1. debug5x 微信_微信X5内核webview调试

    title: 微信X5内核webview调试 date: 2015-12-15 03:51 comments: true tags: [debug, webview, 微信] 题记 记得在简书中很早就 ...

  2. android 集成x5内核时 本地没有,腾讯浏览服务-接入文档

    三.SDK集成步骤 1. 第一步 下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类,具体对应如下: 系统内核 SDK内核 android.webki ...

  3. x5内核 ajax base64,腾讯X5内核 WebView 实践篇

    基于腾讯 X5 内核的WebView开发: 1.onPageFinished 2.onProgressChanged() 3.合适的时机获取页面元素 业务需求是在 html 中注入 js脚本实现阅读模 ...

  4. Android中使用x5内核加载网页的实现

    前言 联系方式 背景 SDK下载 SDK集成 使用 代码实现 前言 由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统. 联系 ...

  5. Android WebView相册选取图片及集成(X5内核,crosswalk)

    webview加载商城连接地址,系统webview的加载商城里的一个分类页面卡顿,其余页面正常. 自己写webview显然不现实,继承系统的写出来效果还是如此,然后就集成了腾讯X5的内核. TBS(腾 ...

  6. android x5 webview报错,appium 混合 APP,x5 内核,webview 切换报错

    前言:15 号左右,开发和我说搞了一个高逼格的东西,亲儿子换成 QQx5 的内核了,然后我这边发现____以前可以直接定位的,现在更换 x5 内核之后 H5 页面的元素竟然 switch_to.con ...

  7. Android的WebView如何播放视频和全屏视频(腾讯X5内核)

    WebView如何播放视频和全屏视频 前言 1. 接入SDK 2. 具体场景和代码实现 3. 踩坑 3.1 android.system.ErrnoException: chmod failed: E ...

  8. Android 抛弃原生WebView,使用腾讯X5内核、并加入广告拦截。

    大家都不知道原生的WebView 存在各种坑.各种适配问题. 最近在使用,总会出现DNS被拦截的情况.预览了各个大神的论坛与博客. 发现可以更改WebView内核.找到了比较火的两个. 分别是:腾讯X ...

  9. android腾讯x5播放器,腾讯x5内核浏览器WebView调起微信支付,以及实现x5内核视频播放...

    1.新建项目在app目录下新建文件夹libs,用于导入腾讯内核jar依赖包 图片发自简书App 2.main目录下新建jniLibs文件夹,用于存放x5内核的.so文件,播放视频用. 图片发自简书Ap ...

  10. android内核网络缓存,Android WebView cache 缓存 腾讯X5内核在线视频播放

    [实例简介] Android WebView cache 缓存 腾讯X5内核在线视频播放 [实例截图] [核心代码] Terry007 └── Terry007 ├── AndroidManifest ...

最新文章

  1. 笔记,提醒,pytorch安装命令(conda)
  2. java 判断是否是list_给Java程序员的20个链表面试题
  3. 速冻果蔬青麦源品牌-农业大健康·李喜贵:谋定功能性技术
  4. GAN生成对抗网络-PIX2PIXGAN原理与基本实现-图像翻译09
  5. Java 并发编程—Synchronized关键字
  6. 项目周期一般多久_办公家具定制的特殊性是需要一定的制作周期
  7. jboss eap 7_使用JBoss EAP 7的HTTP / 2
  8. Android开发群
  9. oracle中只存储两年数据,Oracle中作为永久存储机制的嵌套表的数据追加
  10. 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_原理---大数据之hadoop工作笔记0074
  11. iphone4 Safari实现滚动条功能
  12. 【共读Primer】8.[2.1] 基本内置类型(2) Page32
  13. 无线投影服务器连接投影仪,无线投屏器怎么与投影机连接
  14. 百度指数 数据分析(介绍)
  15. 微信小程序的APPID问题
  16. linux环境下,mysql数据库的完美卸载!(亲测)
  17. 【算法练习】POJ - 3683 Priest John's Busiest Day (2-SAT)
  18. 微型计算机外部设备接口,第五章 微型计算机输入输出接口
  19. JAVA基础算法练习(2):猜年龄
  20. 机器学习(2)——周志华

热门文章

  1. UI 设计常用尺寸规格
  2. pdf安装 adobe acrobat reader DC
  3. 3.1、如何通过ISP(FlyMcu串口)下载程序(附CH340驱动及FlyMcu安装包)
  4. 4k电视色彩表现测试软件,选高端4K电视 4K测试图帮你轻松分辨
  5. 直销模式系统开发|双轨制度跟级差制度哪个模式比较好?
  6. 如何批量查询ip地址归属地等信息?
  7. Python实验-字典攻击
  8. 再更。。2019保研北大夏令营+九推
  9. Winform使用FTP实现自动更新
  10. PHP计算GPS路书,搜狗地图推出路书功能 免费而智能的GPS