从单独的类调用活动函数

时间:2013-12-17 16:26:26

标签: javascript android webview android-activity

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

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

我想要做的是能够通过javascript调用活动的finish()功能。但是,因为只能从活动中调用 - 如何使用单独的接口类实现此目的?

1 个答案:

答案 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>