WebView和JS交互

Android端調(diào)用js

使用loadUrl(1. 會刷新頁面 2. 無法獲取 js 方法執(zhí)行結(jié)果)

mWebview.loadUrl("javascript: func()");

使用evaluateJavascript(1. 性能好 2. 可獲取 js 執(zhí)行后的返回值? 3.僅在安卓 4.4 以上可用)

mWebview.evaluateJavascript("javascript: func()", new ValueCallback() {

@Override

? ? public void onReceiveValue(String value) {

return;

? ? }

});

js調(diào)用Android端

1.定義一個與JS對象映射關(guān)系的Android類:AndroidtoJs

public class AndroidtoJsextends Object {

// 定義JS需要調(diào)用的方法

// 被JS調(diào)用的方法必須加入@JavascriptInterface注解

? ? @JavascriptInterface

public void hello(String msg) {

System.out.println("JS調(diào)用了Android的hello方法");

? ? }

}

2.在activity中的webview添加Android類與JS代碼的映射

webview = findViewById(R.id.webview);

WebSettings webSettings = webview.getSettings();

// 設(shè)置與Js交互的權(quán)限

webSettings.setJavaScriptEnabled(true);//--------------- 這個要設(shè)置 要不會執(zhí)行方法

webview.loadUrl("file:///android_asset/javascript1.html");

// 通過addJavascriptInterface()將Java對象映射到JS對象,參數(shù)1:Javascript對象名,參數(shù)2:Java對象名

webview.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS類對象映射到j(luò)s的test對象

3.js中調(diào)用AndroidtoJs@JavascriptInterface修飾的方法

<script>function callAndroid(){ test.hello("js調(diào)用了android中的hello方法"); }</script>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容