本文共 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