如何从 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
}
我想在加载此页面后从 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
}