我认为这不是让Javascript执行Java代码的最佳解决方案。看这里:
如果要将本机代码公开给HTML,以便可以通过javascript进行调用,请在网络视图声明周围执行以下操作:
JavascriptInterface jsInterface = new JavascriptInterface(this);webView.getSettings().setJavascriptEnabled(true);webView.addJavascriptInterface(jsInterface, "JSInterface");
宣布课程
JavascriptInterface:
public class JavascriptInterface { private Activity activity; public JavascriptInterface(Activity activity) { this.activity = activity; } @JavascriptInterface public void startVideo(String videoAddress){ Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); activity.startActivity(intent); }}我声明了一个用于播放视频的功能,但是您可以做任何您想做的事情。
最后,您可以
WebView通过简单的javascript调用在内容中调用此代码:
<video width="320" height="240" controls="controls" poster='poster.gif' onclick="window.JSInterface.startVideo('file:///sdcard/test.3gp');" > Your browser does not support the video tag.</video>这个例子取自我的另一个关于播放视频的答案,但应该有足够的解释。
编辑
如果应用程序的目标版本设置为17或更高,则需要在
@JavascriptInterface要导出到Web视图的每种方法上方添加注释。



