我一直在关注android教程(找到here),试图让一个简单的Web应用程序工作。
我有一个名为CalendarActivity
的活动,其中包含WebView
。此WebView
会从assets\www\
文件夹中呈现一个页面。我还有一个CalendarInterface
,它保存了html页面中javascript调用的方法。
我想要做的是能够通过javascript调用活动的finish()
功能。但是,因为只能从活动中调用 - 如何使用单独的接口类实现此目的?
答案 0 :(得分:2)
使用链接页面作为示例,您应该可以执行以下操作:
public class WebAppInterface {
Activity mActivity;
/** Instantiate the interface and set the activity */
WebAppInterface(Activity activity) {
mActivity = activity;
}
/** Finish activity from the web page */
@JavascriptInterface
public void finishActivity() {
mActivity.finish();
}
}
现在,在您的活动中,您可以像这样添加JS界面:
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
在您的网页中,您可以点击按钮完成活动,如下所示:
<input type="button" value="Finish the activity now" onClick="finishActivity()" />
<script type="text/javascript">
function finishActivity() {
Android.finishActivity();
}
</script>