如何从 Android webview 获取 var

How to get var from Android webview

我想在加载此页面后从 webview 中获取 resPG 的值

<script>
$(document).ready(function(){
    var resPG = {status: '<?php echo $status;?>', msg: '<?php echo $msg;?>', trans_no: '<?php echo $Tran_ID;?>', pay_amt: '<?php echo $Amount;?>', pg_type: '<?php echo $Tran_Type;?>', billno: '<?php echo $RRN;?>', PAN: '<?php echo $PAN;?>'};   
    localStorage.setItem('resPG', JSON.stringify(resPG));
});
</script>

您需要创建一个 Javascript interface for get values from web to android native. for working example click this link

步骤 1) 启用网络视图设置

WebView mWebView = findViewById(R.id.myWebView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new MyWebChromeClient((Activity)mContext));
mWebView.addJavascriptInterface(new testClass(), "jsinterface");
mWebView.loadUrl("UrlToLoad");

创建界面:

public class testClass{
    public testClass() {
    }

    @JavascriptInterface
    public void getvalues(value) {
       Log.i('web view value',value)
    }
}

第 3 步: 在JS里面添加接口函数

$(document).ready(function(){
    var resPG = {status: '<?php echo $status;?>', msg: '<?php echo $msg;?>', trans_no: '<?php echo $Tran_ID;?>', pay_amt: '<?php echo $Amount;?>', pg_type: '<?php echo $Tran_Type;?>', billno: '<?php echo $RRN;?>', PAN: '<?php echo $PAN;?>'};   
    localStorage.setItem('resPG', JSON.stringify(resPG));
jsinterface.getvalues(resPG );
});

另一种方法更好处理

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
                webView.evaluateJavascript("{status: '<?php echo $status;?>', msg: '<?php echo $msg;?>', trans_no: '<?php echo $Tran_ID;?>', pay_amt: '<?php echo $Amount;?>', pg_type: '<?php echo $Tran_Type;?>', billno: '<?php echo $RRN;?>', PAN: '<?php echo $PAN;?>'};", new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                        contentView.setText(s);
                    }
                });
            }
            else {
                webView.loadUrl("javascript:window.jsinterface.getvalues({status: '<?php echo $status;?>', msg: '<?php echo $msg;?>', trans_no: '<?php echo $Tran_ID;?>', pay_amt: '<?php echo $Amount;?>', pg_type: '<?php echo $Tran_Type;?>', billno: '<?php echo $RRN;?>', PAN: '<?php echo $PAN;?>'};)");

            }

您可以在网络视图加载中使用 JavaScript 方案 URL 如下所示

webview.loadUrl("javascript:Android.getMyData(MyData);");

//Add the javascript interface to your web view
this.addJavascriptInterface(new MyJavaScriptInterface(webViewContext), "Android");

public class MyJavaScriptInterface{
    Context mContext;

    /** Instantiate the interface and set the context */
    CustomJavaScriptInterface(Context c) {
        mContext = c;
    }


    /** retrieve the data */
    public void getMyData(final String myData) {

        //Do somethings with the Data

}