下面是针对“Android与H5互调详细介绍”的完整攻略。实现Android与H5的数据交互,我们可以使用以下方法:
1. 使用JavascriptInterface
我们可以通过JavascriptInterface类在Android中定义一个Java的接口,用于接受H5页面获取的数据,并且可以向H5页面发送数据。
首先,在android代码中定义一个JavascriptInterface类:
public class JsInterface {
private Context mContext;
public JsInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void showToast(String msg) {
Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public String getDeviceInfo() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("os", "Android");
jsonObject.put("version", Build.VERSION.RELEASE);
jsonObject.put("model", Build.MODEL);
jsonObject.put("brand", Build.BRAND);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject.toString();
}
}
然后,在Activity的onCreate方法中绑定这个接口:
WebView webView = findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
JsInterface jsInterface = new JsInterface(this);
webView.addJavascriptInterface(jsInterface, "android");
在H5页面中,我们就可以通过window.android访问这个接口方法:
<button onclick="android.showToast('Hello World')">点击弹出Toast</button>
<script>
var deviceInfo = JSON.parse(window.android.getDeviceInfo());
console.log('设备信息:', deviceInfo);
</script>
这样,我们就可以通过JavascriptInterface实现Android和H5之间的数据交互。
2. 使用evaluateJavascript
我们可以使用WebView的evaluateJavascript方法在H5页面中执行JavaScript脚本,并且在Java代码中获取执行结果,实现Android向H5发送数据。
首先,在H5页面中定义一个监听函数,用于接受Android代码发送的数据:
<script>
function onReceiveMessage(msg) {
console.log('接受到来自Android的消息:', msg);
}
</script>
然后,在Android代码中调用evaluateJavascript方法发送数据给H5页面:
webView.evaluateJavascript("onReceiveMessage('Hello H5!')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// value是evaluateJavascript的结果
}
});
这样,我们就可以通过evaluateJavascript方法实现Android向H5发送数据。
除此之外,还有一些其他方法,比如使用WebChromeClient的onJsAlert方法,这里就不一一介绍了。
希望以上内容对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android与H5互调详细介绍 - Python技术站