【问题标题】:getting webViewClient.shouldInterceptRequest() on android 2.x在 android 2.x 上获取 webViewClient.shouldInterceptRequest()
【发布时间】:2013-01-18 05:20:39
【问题描述】:

我正在覆盖 webViewClient.shouldInterceptRequest() 以从资产文件夹返回常见资源,如图像和 js 文件。但这适用于 android >=3 。是否有任何替代方法可用于 android 2.x

我发现onLoadResource() 提供了类似的行为,但它的返回类型是 void

【问题讨论】:

    标签: android android-webview webviewclient


    【解决方案1】:

    我已经对此进行了一段时间的研究,到目前为止,我发现实现类似目的的实用方法是为此 Web 视图实现本地 HTTP 代理。

    要为 webview 设置代理,请参阅这个问题:WebView android proxy

    有很多用 Java 编写的开源 HTTP 代理,例如 LittleProxy


    另一种可能但复杂的方法:使用shouldOverrideUrlLoading() 捕获所有页面请求但始终返回true。用自己的代码获取页面内容,然后用本地缓存副本解析替换所有远程资源,最后用WebView.loadData()加载修改后的内容。

    【讨论】:

    • 对我来说,加载资产时在 Jellybean 上没有调用 shouldOverrideUrlLoading - 它仅在我加载 url 时调用。我正在切换到使用代理。
    • @chaqke 正如方法名所暗示的,它只适用于 URL 加载。您仍然可以以 URL 的方式加载您的资产,并将该 URL 加载到您的本地资产中。
    • 在加载本地 html 文件时为资产调用了 API-level-11 shouldInterceptRequest,但未调用 API-level-1 shouldOverrideUrlLoading。我需要在加载时处理(解密)资产,但不能保证哪些资产将由本地 html 链接。对于处于类似情况的任何人,代理似乎是一个更好的主意,然后以编程方式查找/加载/替换已经被 webview 不正确加载的资产。
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2012-09-16
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多