【问题标题】:PhoneGap android application with plugins带有插件的 PhoneGap android 应用程序
【发布时间】:2011-12-22 14:11:20
【问题描述】:

这只是我很快就要看的东西,所以想在这个话题上抢先一步。

目前我有一个 phonegap 应用程序,其中包含大量 HTML/JS 文件,正如您所期望的那样,但是我也想要支持插件。插件将包含新的 html/js 文件以及其他资源,并会根据某些接口公开插件合同模型。所以你会安装 main 应用程序,然后假设我决定为 X 添加一个新插件,然后他们会去市场下载 plugin 应用程序,通过本身没用,但会通过主应用程序调用。

现在浏览了互联网后,我找到了Write Plugin for Android App

它告诉我如何在 android 级别加载插件,但让我有点困惑的部分是如何访问该插件中包含的 html/js 资源。使用 .net 和其他东西,您可以从 dll 中提取资源,但我必须在 Android 中执行此操作,还是有更好的方法来访问插件中包含的静态文件。

所以这个问题的关键是,如何从已安装的插件中​​加载静态文件。

【问题讨论】:

    标签: android plugins cordova


    【解决方案1】:

    我不确定我是否清楚地理解了您的问题,但我想您想了解如何在 js 文件中触发函数。如果这是这里的问题,我是如何做到的。希望对您有所帮助。

        private static void invokeJavascript(String javascriptFunctionName, String[] javaScriptParam) {
    
            StringBuilder buf = new StringBuilder("javascript:");
    
            buf.append(javascriptFunctionName);
            buf.append("('");
    
            for (int i = 0; i < javaScriptParam.length; i++) {
                buf.append(javaScriptParam[i]);
                    buf.append("','");
            }
    
            buf.append("','nativeCallbackSuccess', 'nativeCallbackFail')");
            cordovaWebView.loadUrl(buf.toString());
      }
    

    【讨论】:

    • 忽略 Html Phonegap 位,只是在 android 中交谈,我想制作一个可以自行使用的主要应用程序。然后,我想为该应用程序编写用户可以安装的插件,它将向主应用程序添加功能。与 ScummVM 及其附加插件非常相似,因此每次安装其中一个 ScummVM 插件时,它都会向主应用程序添加功能。不过,这方面的怪癖是应用程序是用 Html 编写的,而 JS 通过 PhoneGap(或其他类似平台)作为本机应用程序托管。
    • CordovaPlugin 只是为您提供了 JS 和 Native Android 之间的通信。如果您查看 Apache 存储库中的插件,您会发现插件由两部分组成,一个是 JS,另一个是原生 Android。一旦你想向你的 android 应用程序添加一个插件(功能),你所做的就是将 JS 和 Java 代码复制到你的应用程序中。所以它几乎就像你说的那样工作,但有时你还需要向你的 JS(向插件发送命令)和 Android 添加一些代码。
    • 除此之外,如果您想使用 HTML 制作 UI,则只需根据需要触发插件即可。但是我的工作方式有点不同,我的应用程序是 100% 原生的 UI,但我在 JS 的后端管理数据。例如,我的本机 UI 上有一个按钮,当我单击按钮并根据接收到的数据更新 UI 时,我想从 Web 服务的数据库中获取数据,我想为此使用后端。
    • 为了实现这一点,我创建了一个 data_controller.js 文件,其中我有可以从本机触发的功能,然后当触发该功能时,我只需去数据库获取所需的数据并将其发送到我的插件.js 文件将触发本机部分。所以我现在在我的插件(本机)中有数据,然后我只需将其发送回我的 Activity 以使其通过接口更新我的 UI。
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多