我创建了一个应用程序,其中我正在使用webview并加载一个简单的静态html页面。我正在从活动中调用Java脚本函数,但无法从Java脚本中调用函数。我尝试了很少的链接,但是没用。Javascript回调函数传递给Android我无法从JavaScript调用android函数 这是我的代码。先感谢您。
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>
主要活动有以下两个功能。
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。