调用JavaScript函数并获取返回值

时间:2012-10-11 17:40:33

标签: android android-webview webviewclient

我在设计一个应用程序封装Web应用程序的Android应用程序时遇到了大麻烦,我认为StackOverflow现在是我唯一的希望。

第一个问题如下: 我需要拦截“关于”链接上的点击,以使用我们所有应用程序的标准关于视图启动活动。不幸的是,当我点击页面上的链接时,内容由AJAX加载,shouldOverrideUrlLoading(String url)永远不会被调用。

我的解决方法是使用Android的JavaScript接口将对象传递给JS,以便将加载URL放到该对象中,如下所示:

private class JavaScriptInterface {

    @SuppressWarnings("unused")
    public boolean shouldOverrideUrlLoading(String url) {
        if (url.endsWith("about")) {
            startActivity(new Intent("foo.bar.ABOUT"));
            return true;
        }
        return false;
    }
}

这是完美的工作,它看起来不是一个非常难看的解决方法。

第二个问题是,在Android 2.1(手机和模拟器)中,WebView不会在历史记录中存储加载了AJAX的URL,因此,即使使用以下代码覆盖后退按键,回退始终会退出应用程序: / p>

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

奇怪的是,这适用于Android> 2.1的所有版本。 有没有可行的解决方法?

我们正在考虑调用一个JS函数来知道我是否可以回到历史记录但是如何从Android调用JS函数并获取其布尔返回值?

非常感谢。

0 个答案:

没有答案