拦截Android中的Http调用并在本地提供内容

时间:2016-07-05 05:39:27

标签: android webview android-webview webviewclient

我在html页面中有一个iframe,它有一个从服务器加载一些HTMl的iframe。我能够拦截http调用并能够服务于本地HTML文件(即下面方法中的exampleString)。虽然HTMl在iframe中正确呈现,但点击按钮的内联javascript没有执行。有什么我做错了吗? 我已经有下面的设置,并且setJavaScripEnabled为true。 webView.setWebChromeClient(new WebChromeClient())

webView.setWebChromeClient(new WebChromeClient(){

       @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result)

        {
            if (dismissDialogFlag == true) {
                dismissDialogFlag = false;
                result.confirm();
                return true;
            } else {
                return false;
            }

}

public WebResourceResponse shouldInterceptRequest(WebView view,String url){

 if (url.equalsIgnoreCase("https://test.contoso.com:444//WebResources/new_test123")) {
                WebResourceResponse wr1 = createHTMLResponse();
                return wr1;
            }

}

public WebResourceResponse createHTMLResponse(){

        String exampleString = "<html><head><script type=\"text/javascript\" >function clickMe(){alert('!NO!');} </script></head><body>k123456 <button type=\"button\" onclick=\"clickMe()\">Click Me!</button></body></html>";

            InputStream stream = new ByteArrayInputStream(exampleString.getBytes());
        return  new WebResourceResponse("text/html", "UTF-8", stream);
}

0 个答案:

没有答案