我正在寻找一种从 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/