【问题标题】:Android WebView Async Call to Java FunctionAndroid WebView 异步调用 Java 函数
【发布时间】:2015-06-25 15:11:28
【问题描述】:

我正在寻找一种从 JS 对 Android 的本机代码进行异步调用的方法

我有一个带有以下代码的 Main Activity,以使 JS 可以访问本机代码:

 webView.addJavascriptInterface(new BindingHelper(this), "Android");
 webView.loadUrl("file:///android_asset/www/index.html");

BindingHelper 类包含如下内容:

 @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(theContext, toast, Toast.LENGTH_SHORT).show();
    }

 @JavascriptInterface
        public String SuperDuperComplexFunction () {
            //A function that will need some time to finish...
            return "{}";
        }

前面的方法可以从Index.html链接的JS中调用如下:

<script type="text/js">
  Android.showToast("Toast");
</script>

这样showToast() 函数就会同步执行。我需要的是以 aSync 方式调用方法 SuperDuperComplexFunction();(就像 AJAX 请求一样),并且当方法 success 采取一些措施时。 有什么想法吗?

【问题讨论】:

标签: javascript java android asynchronous webview


【解决方案1】:

一种选择是在 java 代码中使用 Http Server,然后在 localhost 上进行 AJAX 调用。这样,Javascript 调用将与任何其他 AJAX 调用完全相同,并且由于您控制 Http 服务器,您可以让它调用您的 SuperDuperComplexFunction()

我过去曾使用NanoHttpd 来表示类似但不完全相同的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2012-07-25
    • 1970-01-01
    • 2017-10-15
    • 2013-03-28
    相关资源
    最近更新 更多