博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发填坑之Bilibili视频页(移动版)的scheme跳转支持
阅读量:4030 次
发布时间:2019-05-24

本文共 1373 字,大约阅读时间需要 4 分钟。

问题现象

打开Bilibili视频播放页,如,正常打开该页面,但过一二秒后页面白屏。

根本原因

Bilibili视频放页的JS脚本会尝试跳转到一个地址,关键代码如下

这里写图片描述
该href的一个实例如下:

bilibili://video/23921215?h5awaken=cHZpZD0zOTY3NzhCMC03QjI4LTRDRjctOEQyNC1BNThBMDgwQ0Y1QUQxMDE1NzNpbmZvY18yMzkyMTIxNV8xNTI4ODU5NDE2NTAwJnVhPU1vemlsbGElMkY1LjAlMjAoTGludXglM0IlMjBVJTNCJTIwQW5kcm9pZCUyMDYuMC4xJTNCJTIwemhfQ04lM0IlMjBOZXh1cyUyMDUlM0IlMjBCdWlsZCUyRk00QjMwWiklMjBjbi5uaW5lZ2FtZS5nYW1lbWFuYWdlciUyRjExNDAlM0IlMjBOaW5lR2FtZUNsaWVudCUyRmFuZHJvaWQlMjB2ZSUyRjUuMS4yLjI1MSUyMHNpJTJGMWIxYmE3YzUtM2EwOS00MzdhLTllOWUtNmJjYmUzOGYxM2YzJTIwY2glMkZLRF8xJTIwc3MlMkYxMDgweDE3NzYlMjBuZyUyRmViNmU0NWE4YTY2N2E0MTczY2RiZjhlZGVhZDBlNjhmZGYlMjB1dCUyRldjaHBiS2JrbkZrREFLWlBLNGJwbVpTOCUyMG50JTJGd2lmaSUyMFVDQnJvd3NlciUyMFVDQlMlMkYyLjEzLjEuMTUmaXNBdXRvT3Blbj10cnVlJmJzb3VyY2U9dWNfYnJvd3Nlcl9hcHA%3D

其实该uri是bilibili APP的所支持的scheme之一,通过反编译其apk后,查看其AndroidManifest.xml,可以找到对应的Intent-filter定义,如下所示

这里写图片描述
如果没有对该uri作任何的拦截处理,WebView会默认加载该链接,出现找不到页面(白屏)。

解决方案

在WebViewClient的实现的shouldOverrideUrlLoading中支持bilibili://video/ uri的拦截,发起相应的intent,拉起Bilibili APP

TIPS分享

  • 查找这类问题可以直接用Chrome的Web Inspector功能,另外借助能更改UA的插件。更改UA的插件能更正实的模拟自己的WebView组件,尽可能的在Chrome上重现问题。 我目前使用的是 User-Agent Switcher for Chrome
  • Chrome的Web Inspector的网页(网站)代码的全局搜索功能是 (mac上是cmd + alt + F),方便搜索与定位“问题”代码
  • 排查Android WebView相关的排版问题,善用WebViewClient的shouldOverrideUrlLoading的回调(shouldOverrideUrlLoading在网页加载任何子页面,页面跳转都会回调),同时对页面的加载逻辑做拦截也是它的实现中。
    这里写图片描述
你可能感兴趣的文章
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习笔记4——猜数字游戏,随机数
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
学习设计模式(5)——装饰器模式
查看>>
学习设计模式(6)——建造者模式
查看>>
rep movsd ,N - move all of our dwords--【解决办法】
查看>>
查找连续相同值的算法,并给出连续相同值的个数以及位置
查看>>
关于STL中的Vector,list和deque
查看>>
错误:常量中有换行符
查看>>
学习设计模式(8)——单例模式2
查看>>
学习算法(1)——2分查找法
查看>>
github入门指南
查看>>
Import GPG key in CentOS 7
查看>>
CentOS7挂载windows下的共享文件夹
查看>>
CentOS升级gcc4.4.7到gcc4.8.5
查看>>
学习算法(2)——查找数组中的相同元素
查看>>
学习算法(3)——查找2个数组中的相同元素
查看>>