前言:以下是webView和JS互相調用的基礎介紹褂删。
利用WebView調用網頁上的JavaScript代碼(java調用JS)
說白了接奈,只有一步拂酣,就是loadUrl椅棺,在WebView中調用Js的基本格式為:
webView.loadUrl("javascript:methodName(parameterValues)");
代碼示例,現(xiàn)有以下這段JavaScript代碼偿凭,將展示3種用法:
<script type="text/javascript">
function readyToGo() {
alert("Hello")
}
function alertMessage(message) {
alert(message)
}
function getYourCar(){
return "Car";
}
</script>
注意:需要在主線程中發(fā)起調用
- WebView調用JavaScript無參無返回值函數
String call = "javascript:readyToGo()";
webView.loadUrl(call);
- WebView調用JavScript有參無返回值函數
String call = "javascript:alertMessage(\"" + "content" + "\")";
webView.loadUrl(call);
- WebView調用JavaScript有參數有返回值的函數
@TargetApi(Build.VERSION_CODES.KITKAT)
private void evaluateJavaScript(WebView webView){
webView.evaluateJavascript("getYourCar()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("findCar",s);
}
});
}
JavaScript通過WebView調用Java代碼(JS調用java)
從API19開始产弹,Android提供了@JavascriptInterface對象注解的方式來建立起Javascript對象和Android原生對象的綁定,提供給JavScript調用的函數必須帶有@JavascriptInterface弯囊。
實際上痰哨,就是3個步驟:
1,@JavascriptInterface注解匾嘱;
2斤斧,注冊JavaScriptInterface;
3奄毡,調用折欠,如window.android.show("JavaScript called~!");
演示一 JavaScript調用Android Toast方法
- 編寫Java原生方法并用使用@JavascriptInterface注解
@JavascriptInterface
public void show(String s){
Toast.makeText(getApplication(), s, Toast.LENGTH_SHORT).show();
}
2.注冊JavaScriptInterface
webView.addJavascriptInterface(this, "android");
addJavascriptInterface的作用是把this所代表的類映射為JavaScript中的android對象。
3.編寫JavaScript代碼
function toastClick(){
window.android.show("JavaScript called~!");
}
演示二 JavaScript調用有返回值的Java方法
1.定義一個帶返回值的Java方法吼过,并使用@JavaInterface:
@JavaInterface
public String getMessage(){
return "Hello,boy~";
}
2.添加JavaScript的映射
webView.addJavaScriptInterface(this,"Android");
3.通過JavaScript調用Java方法
function showHello(){
var str=window.Android.getMessage();
console.log(str);
}
以上就是Js與WebView交互的一些介紹。
感謝:
WebView·開車指南