gpt4 book ai didi

android - Android JavascriptInterface 中的 Javascript 命名空间

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:45 25 4
gpt4 key购买 nike

我正在为我的应用程序创建一个 javascript api,我想在我的 javascript 代码中使用命名空间。但是我无法让它工作,也找不到有关该问题的任何信息。

期望的功能:

HTML:

<script>
Android.typeOne.methodName();
Android.typeTwo.methodName();
</script>

Java 代码:

webView.addJavascriptInterface(new TypeOneInterface(context), "Android.typeOne");
webView.addJavascriptInterface(new TypeTwoInterface(context), "Android.typeTwo");

但是这永远行不通,如果我删除 .typeOne 并拥有:Android.methodName 那么它就可以正常工作。

最佳答案

我正在查看 addJavascriptInterface 的文档.它表示 Java 对象的字段不可访问。 由于 typeOne 必须是导出的 Java 对象的属性,看来您需要安排“命名空间”用手。即导出TypeOne,放到全局JavaScript Android对象中。

所以我猜您需要创建空对象,然后根据需要将内容放入其中。

<script>
// after stuff has been "injected into the JS context of the main frame"

Android = {};
Android.typeOne = window.TypeOne;

...和

webView.addJavascriptInterface(new TypeOneInterface(context), "TypeOne");

这个答案是一个猜测,我从未在 WebView 中使用过 JavaScript。

关于android - Android JavascriptInterface 中的 Javascript 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21995485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com