从单独的类调用活动函数

Calling activity function from separate class

本文关键字:活动 函数 调用 单独      更新时间:2023-09-26

我一直在关注Android教程(在这里找到),试图让一个简单的Web应用程序工作。

我有一个名为CalendarActivity的活动,它有一个WebView。此WebView呈现assets'www'文件夹中的页面。我还有一个CalendarInterface,它保存了 javascript 从 html 页面调用的方法。

我想做的是能够通过javascript调用活动的finish()函数。但是,由于这只能从活动内部调用 - 如何使用单独的接口类来实现这一点?

以链接页面为例,您应该能够执行以下操作:

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>