[英]How to communicate between WebView & JavaScript?
我正在開發本機應用程序。 我的應用程序有一個WebView
。 我想記錄這個WebView
的組件的每個動作 。 單擊了哪個按鈕,拖動了哪個圖像。 在那之后,我將記錄那些東西,我想存儲在SQLite中。
所以,我用Google搜索並找到了傳遞Java和JavaScript的WebAppInterface
。 但這種溝通還不夠。 我無法從WebAppInterface
類發送數據庫。
我想問這個問題 (分鍾46:00
)。
可能嗎? 或者,另一種解決方案
問候,
您應該將javascript界面添加到您的webView,如下所示:
webView.addJavascriptInterface(new JavascriptInterface(this), "AndroidFunction");
你應該創建接口類:
public class JavascriptInterface{
Context mContext;
JavascriptInterface(Context c) {
mContext = c;
}
public void save(String action){
// save to database
}
}
在網站上你應該致電:
AndroidFunction.save("actionName");
官方鏈接: http : //developer.android.com/reference/android/webkit/WebView.html
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");
-------------------------------必須API> 17
我的調整,HTML,jsobj.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello TEST JS</title>
</head>
<body style="background: white; font-family: Helvetica">
<script type="text/javascript">
document.write(AndroidFunction.show());
AndroidFunction.save("abc");
</script>
</html>
安卓:
web.addJavascriptInterface(new JsObject(), "AndroidFunction");
...
class JsObject{
@JavascriptInterface
public void save(String action){
L.d("action:"+action);
}
public String show(){
return "Hello Android";
}
}
你有沒有看過PhoneGap和Cordova插件? Cordova Plugin在Java與webview和webview之間提供了非常強大的Java通信。 已經有一些關於記錄數據的開源插件,你可以嵌入到你的應用程序中。
看看這個鏈接: Cordova插件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.