支持传参与获取返回值
import android.app.Activity;
import android.webkit.JavascriptInterface;
public class JsInterface {
private MainActivity activity;
public JsInterface(Activity activity) {
this.activity = (MainActivity)activity;
}
@JavascriptInterface
public void setPrefString(String key, String value){
PrefUtils.setString(activity.getApplicationContext(), key, value);
}
@JavascriptInterface
public String getPrefString(String key){
return PrefUtils.getString(activity.getApplicationContext(), key, "");
}
@JavascriptInterface
public void delPrefString(String key){
PrefUtils.delString(activity.getApplicationContext(), key);
}
}
// 添加js接口,添加$App到window
webView.addJavascriptInterface(new JsInterface(this), "$App");
if (window.$App && window.$App.setPrefString) {
window.$App.setPrefString('jToken', resp.data.data.jToken)
window.$App.setPrefString('studentNo', resp.data.data.studentNo)
}
if (window.$App && window.$App.getPrefString) {
this.studentNo = window.$App.getPrefString('studentNo')
}
x5WebView.loadUrl("http://192.168.3.127:8081?id=103")
在 Vue 工程目录下 index.html 中加入脚本
<script>
curParams = {};
var arr = location.search.split(/[?|&]/);
if(arr.length > 1){
for(var i = 1; i < arr.length; i++){
var pArr = arr[i].split('=');
curParams[pArr[0]] = decodeURIComponent(pArr[1]);
}
}
</script>
读取参数
let userNo = window.curParam['userNo'] || ''
这里使用 EventBus 实现,参看 EventBus
let that = this
// 当调用 window 中 onQrResult 方法时,向 EventBus 中提交 onQrResult 事件,传入参数
window.onQrResult = function(code) {
that.$EventBus.$emit('onQrResult', code)
}
在 methods 中定义需要被调用的方法
onQrResult(code) {
console.log(code)
},
在 created 中注册事件
this.$EventBus.$on('onQrResult', this.onQrResult)
在 beforeDestroy 中注销事件
this.$EventBus.$off('onQrResult')
在 Android 中调用
webView.loadUrl("javascript:onQrResult('" + qrResult + "')");