1

我将JS代码加载到WebView. 此JSfile:代码使用方案 uri请求一些文件。这些文件是加密存储的,我想在JS模块请求它们时在 Java 代码中解密它们。我知道如果这些请求是通过http:方案,那么我可以设置本地 http 服务器并通过它将解密的内容传递给JS模块。有没有办法使用方案 uri将解密的内容传递给JS模块?file:

4

1 回答 1

2

创建一个WebViewClient具有覆盖的子类shouldInterceptRequest(WebView view, WebResourceRequest request)并将其附加到您的WebView

webview.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {

        if ("file".equals(request.getUrl.getScheme())) { // plus your other conditions, of course

            String mimeType = ... // your mime type
            String encoding = ... // your character encoding
            ...

            InputStream data = ... // open stream to your decrypted file data
            return new WebResourceResponse(mimeType, encoding, data);

        } else {
            return null;  // tell WebView to handle it
        }
    }
});
于 2016-02-29T18:14:08.717 回答