带有插件的PhoneGap android应用程序

带有插件的PhoneGap android应用程序,android,plugins,cordova,Android,Plugins,Cordova,这正是我很快就会看到的东西,所以我想在这个话题上取得一个开端 目前,我有一个phonegap应用程序,它包含大量HTML/JS文件,正如您所期望的,但是我也希望支持插件。这些插件将包含新的html/js文件以及其他资源,并将公开基于某些接口的插件契约模型。所以你会安装主应用程序,然后假设我决定为X添加一个新插件,然后他们会去市场下载插件应用程序,它本身是无用的,但会通过主应用程序调用 现在,在浏览了互联网之后,我发现 这告诉我如何在android级别加载插件,但让我有点困惑的是如何访问该插件中包

这正是我很快就会看到的东西,所以我想在这个话题上取得一个开端

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

现在,在浏览了互联网之后,我发现

这告诉我如何在android级别加载插件,但让我有点困惑的是如何访问该插件中包含的html/js资源。使用.net和其他工具,您可以从DLL中提取资源,但我必须在Android中这样做,还是有更好的方法来访问插件中包含的静态文件


因此,这个问题的关键是,如何从已安装的插件加载静态文件。

我不确定我是否清楚地理解了您的问题,但我想您想了解如何在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());
  }
private static void invokeJavascript(字符串javascriptFunctionName,字符串[]javaScriptParam){
StringBuilder buf=新的StringBuilder(“javascript:”);
追加(javascriptFunctionName);
buf.追加(“(”);
for(int i=0;i
我不确定我是否清楚地理解了您的问题,但我猜您想了解如何在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());
  }
private static void invokeJavascript(字符串javascriptFunctionName,字符串[]javaScriptParam){
StringBuilder buf=新的StringBuilder(“javascript:”);
追加(javascriptFunctionName);
buf.追加(“(”);
for(int i=0;i
忽略Html Phonegap位,只使用android,我想创建一个自己可用的主应用程序。然而,我想为用户可以安装的应用程序编写插件,它将向主应用程序添加功能。与scumvm及其附加插件非常相似,因此每次安装一个scumvm插件时,它都会向主应用程序添加功能。不过,围绕这个问题的一个怪癖是,应用程序是用Html和JS编写的,通过PhoneGap(或其他类似平台)作为本机应用程序托管的。CordovaPlugin只是为您提供了JS和本机Android之间的通信。如果您查看Apache存储库中的插件,您将看到插件由两部分组成,一部分是JS,另一部分是原生Android。一旦你想在android应用程序中添加插件(功能),你要做的就是通过JS和Java代码复制到你的应用程序中。所以它的工作原理和你说的差不多,但根据插件的不同,有时你还需要在你的JS(向插件发送命令)和Android中添加一些代码。除此之外,如果你想制作一个带有HTML的UI,你只需要根据需要触发插件。但我的工作方式有点不同,我的应用程序在UI方面是100%原生的,但我在后端用JS管理数据。例如,我在我的原生UI上有一个按钮,当我点击按钮并根据接收到的数据更新UI时,我想从我的DB从web服务中获取数据,我想使用后端进行更新。为此,我创建了一个data_controller.js文件,其中有我可以从原生UI触发的函数,然后,当函数被触发时,我只需去数据库获取所需的数据,并将其发送到我的plugin.js文件,该文件将触发本机部分。因此,我现在在我的插件(本机)中有了数据,然后我将其发送回我的活动,让它通过一个界面更新我的UI。忽略Html Phonegap位,只需在android中交谈,我想创建一个自己可用的主应用程序。然而,我想为用户可以安装的应用程序编写插件,它将向主应用程序添加功能。与scumvm及其附加插件非常相似,因此每次安装一个scumvm插件时,它都会向主应用程序添加功能。不过,围绕这个问题的一个怪癖是,应用程序是用Html和JS编写的,通过PhoneGap(或其他类似平台)作为本机应用程序托管的。CordovaPlugin只是为您提供了JS和本机Android之间的通信。如果您查看Apache存储库中的插件,您将看到插件由两部分组成,一部分是JS,另一部分是原生Android。一旦你想在android应用程序中添加插件(功能),你要做的就是通过JS和Java代码复制到你的应用程序中。所以它的工作原理和你说的差不多,但根据插件的不同,有时你还需要在你的JS(向插件发送命令)和Android中添加一些代码。除此之外,如果你想制作一个带有HTML的UI,你只需要根据需要触发插件。但我的工作方式有点不同,我的应用程序在UI方面是100%原生的,但我在后端用JS管理数据。例如,我的原生用户界面上有一个按钮,我想从中获取数据