从android的webview访问JSON响应

6 java android json webview

在Android上,我有一个webView.我正在加载url它.首先,我得到一个登录页面,Facebook在填写登录详细信息后,它给了我一个JSON Response相同的webView.

我正在使用此代码来加载它,URL但现在我不知道如何JSON Responsestring我完成的内容中得到它url.

WebViewClient yourWebClient = new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        wb.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
    }
};
wb = (WebView) findViewById(R.id.webview);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setSupportZoom(true);
wb.getSettings().setBuiltInZoomControls(true);
wb.setWebViewClient(yourWebClient);
wb.loadUrl("http://pqrs.abcde.com/facebook");
Run Code Online (Sandbox Code Playgroud)

格式JSON Response是:

{"status":"success","msg":"You have successfully logged in."}
Run Code Online (Sandbox Code Playgroud)

小智 18

构建一个名为MyJavaScriptInterface的类.和WebView的MyJavaScriptInterface.

    WebViewClient yourWebClient = new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            wb.loadUrl("javascript:HtmlViewer.showHTML" +
                    "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
        }
    };
    wb = (WebView) findViewById(R.id.webview);
    wb.getSettings().setJavaScriptEnabled(true);
    wb.getSettings().setSupportZoom(true);
    wb.getSettings().setBuiltInZoomControls(true);
    wb.setWebViewClient(yourWebClient);
    wb.loadUrl("http://pqrs.abcde.com/facebook");
    wb.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
Run Code Online (Sandbox Code Playgroud)
    class MyJavaScriptInterface {

    private Context ctx;
    MyJavaScriptInterface(Context ctx) {
        this.ctx = ctx;      
    }

    @JavascriptInterface
    public void showHTML(String html) {
        System.out.println(html);
    }

}
Run Code Online (Sandbox Code Playgroud)

注意:从中您需要删除wb.loadUrl中的窗口("javascript:...");. 和@JavascriptInterface之前的"public void showHTML".

您可以在html参数中从showHtml(..)获取内容.