我创建了一个应用程序,我在其中使用 webview 并加载一个简单的静态 html 页面。我正在从 Activity 中调用 java 脚本函数,但我无法从 java 脚本中调用函数。我尝试了几个链接,但没有用。
Javascript Callback function pass to Android
I cannot call an android function from javascript
这是我的代码。提前谢谢你。
acitivity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Call JavaScript Function"
android:onClick="callJavaScript" />
<WebView
android:id="@+id/myWebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
index.html
<html>
<head>
<script type="text/javascript">
function displayMessage(){
document.getElementById('test1').innerHTML = 'This is from java script.';
Android.returnResult();
}
</script>
</head>
<body>
<h1 id="test1">Hello World</h1>
</body>
</html>
主要 Activity 有以下两个功能。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) this.findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new JavaScriptHandler(this), "Android");
myWebView.loadUrl("file:///android_asset/index.html");
}
public void callJavaScript(View view) {
Log.v(null, "Calling java Script");
myWebView.loadUrl("javascript:displayMessage()");
}
这是 JavaScriptHandler 类
public class JavaScriptHandler {
Context mContext;
public JavaScriptHandler(Context context) {
mContext = context;
}
public void returnResult() {
Log.v(null, "result received");
}
}
最佳答案
成功
@JavascriptInterface
public void returnResult() {
Log.v(null, "result received");
}
此注释允许将方法公开给 JavaScript。
关于java - 安卓 : callback function from java script to java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243686/