作者:镜头拿反的葛小峥给_523 | 来源:互联网 | 2023-08-22 13:59
在我的app中,我需要将一些HTML,JS,CSS文件打包放入apk中。其中使用了WebView来加载这些页面。但是这里由于内部逻辑需要,我必须拦截所有WebView加载的资源,来进行修改,将修
在我的app中,我需要将一些HTML,JS,CSS文件打包放入apk中。其中使用了WebView来加载这些页面。但是这里由于内部逻辑需要,我必须拦截所有WebView加载的资源,来进行修改,将修改之后的stream传递给WebView。
于是我使用了ContentProvider机制。当使用WebView中的loadUrl方法时,传入的参数采用自定义的ContentProvider协议头作为文件的前缀。于是ContentProvider中的openAssetFile就会执行,然后我在其中进行修改,然后将修改后的流返回给WebView。这样WebView展示出来的就是ContentProvider中修改之后文件stream。
问题来了:上述逻辑在之前是运行正常的。直到最近通过GooglePlay升级了WebView版本到76+的时候,出现了问题。上述逻辑依然会执行,但是App会弹出一个选择打开其他App的请求。看起来像是,WebView无法识别这个自定义的ContentProvider协议,所以需要将此协议的文件转发给系统来处理了。
请问有人知道WebView76+版本有什么相关改动吗?非常感谢!