javascript - Android WebView 对 Java 函数的异步调用

标签 javascript java android asynchronous webview

我正在寻找一种从 JS 异步调用 Android 原生代码的方法

我有一个包含以下代码的主 Activity ,使 JS 可以访问 native 代码:

 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() 函数就会同步执行。我需要的是以同步方式调用方法 SuperDuperComplexFunction();(就像 AJAX 请求一样),并在方法成功 时采取一些行动。 有什么想法吗?

最佳答案

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

我用过 NanoHttpd过去对于某种相似但不完全相同的东西。

关于javascript - Android WebView 对 Java 函数的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31054218/

相关文章:

JavaFX - 如何创建(不可见的)WebView 的快照/屏幕截图

java - 具有默认级别访问权限的类内部公共(public)方法有什么用?

android - 在屏幕旋转时在 ViewPager 中显示带有数据的 fragment

java.lang.Object 无法在 Eclipse 中解析

javascript - 向Google可视化表格添加分页(表格分页)

c# - 为什么某些字 rune 字会导致 Java 中的语法错误?

javascript - Webpack html-loader 返回完整的模块定义

android - 如何使用 volley 实现摘要认证?

javascript - Angular 4.0 http put 请求

javascript - 使用一个 ajax 调用上传 xml 文件和图像文件以及相同的提交