我想从Webview调用Java。
I have JavaScriptInterface
below:
class JavaScriptInterface{
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void open(String message){
//do something
}
}
I add JavaScriptInterface
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
在我的 HTML 中,我有这个 onclick 事件:
onclick="window.JSInterface.open('hi');"
我也尝试过:
onclick="JSInterface.open('hi');"
我在 logcat 中遇到此错误:
04-16 14:55:15.829: W/dalvikvm(721): JNI WARNING: jarray 0x4050cf68 points to non-array object (Ljava/lang/String;)
04-16 14:55:15.829: I/dalvikvm(721): "WebViewCoreThread" prio=5 tid=9 NATIVE
04-16 14:55:15.829: I/dalvikvm(721): | group="main" sCount=0 dsCount=0 obj=0x40521218 self=0x1f6cf8
04-16 14:55:15.829: I/dalvikvm(721): | sysTid=729 nice=0 sched=0/0 cgrp=default handle=2059824
04-16 14:55:15.839: I/dalvikvm(721): | schedstat=( 5717972154 3300872155 567 )
04-16 14:55:15.839: I/dalvikvm(721): at android.webkit.WebViewCore.nativeTouchUp(Native Method)
04-16 14:55:15.839: I/dalvikvm(721): at android.webkit.WebViewCore.nativeTouchUp(Native Method)
04-16 14:55:15.839: I/dalvikvm(721): at android.webkit.WebViewCore.access$3300(WebViewCore.java:53)
04-16 14:55:15.839: I/dalvikvm(721): at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1158)
04-16 14:55:15.863: I/dalvikvm(721): at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 14:55:15.869: I/dalvikvm(721): at android.os.Looper.loop(Looper.java:130)
04-16 14:55:15.869: I/dalvikvm(721): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
04-16 14:55:15.869: I/dalvikvm(721): at java.lang.Thread.run(Thread.java:1019)
04-16 14:55:15.869: E/dalvikvm(721): VM aborting
如何修复它?或者另一种方式来做到这一点?
Thanks
-
您需要通过设置在 WebView 中启用 Javascript
final WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setVerticalScrollBarEnabled(false);
myWebView.setHorizontalScrollBarEnabled(false);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
-
您需要在 HTML DOM 中加载 JS。
JsInterface jsInterface = new JsInterface();
jsInterface.wordDef = content;
myWebView.addJavascriptInterface(jsInterface, "interfaces");
myWebView.loadUrl("file:///android_asset/some.html");
-
从 HTML/JS 调用您的界面
/**JAVA CODE **/
public class JsInterface {
public String someString;
Context mContext;
public void JsInterface(Context c){
mContext = c;
}
public String someFunction(){
Log.v("JSInterface", ""+someString);
return someString;
}
}
/* JS Code */
function addData(){
var data = interfaces.someFunction();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)