Android Phonegap生成API调用未触发

Android Phonegap生成API调用未触发,android,jquery,jquery-mobile,cordova,phonegap-build,Android,Jquery,Jquery Mobile,Cordova,Phonegap Build,我正在使用jQuery Mobile和Phonegap构建制作一个应用程序。jQuery移动javascript代码运行良好,但phonegap javascript代码似乎不起作用。应用程序使用了一个多html模板,我将登录名作为应用程序的索引文件 我使用的是phonegap版本3.1.0(构建服务的当前默认版本) 我正在config.xml文件中添加以下行: <gap:plugin name="org.apache.cordova.device" /> <gap:plugi

我正在使用jQuery Mobile和Phonegap构建制作一个应用程序。jQuery移动javascript代码运行良好,但phonegap javascript代码似乎不起作用。应用程序使用了一个多html模板,我将登录名作为应用程序的索引文件

我使用的是phonegap版本3.1.0(构建服务的当前默认版本)

我正在config.xml文件中添加以下行:

<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.file" />
使用ripple emulator,我可以在控制台日志中看到“added”注释,但从未到达“called”注释,如果我运行应用程序并使用weinre对其进行调试,则没有控制台日志注册


在这两种情况下都没有生成任何键,但我也没有得到任何错误,我是否遗漏了什么?我按照此处和此处的建议将功能更改为插件,但仍然不起作用,非常感谢您提供的任何帮助

您需要在实际设备或模拟器上运行。在ripple chrome扩展上运行对您没有帮助

好的,经过数小时的调试和测试,我解决了这个问题,我认为这对以后任何其他phonegap构建用户的参考都有帮助,所以我将在这里列出我所做工作的分步指南。不过,我不知道这是否是最好的方法,因此我非常感谢您对可以改进的地方的反馈:)

要使jQuery与Phonegap构建和Phonegap API配合使用,您需要在应用程序的索引中执行以下操作:

  • 请注意,API调用不会在模拟器中运行,您需要一个真正的设备来检查这一点。(感谢@Dato'Mohammad Nurdin提供的宝贵信息)
  • 添加对phonegap脚本的引用
    理想情况下,这可以是您的第一个脚本引用,它不需要任何库,也不需要库本身,phonegap build将在编译代码后添加它
  • 添加jQuery引用(如果您需要它,因为我使用jQuery Mobile,所以我需要它)
  • 下次添加事件监听器时,索引文件中将出现设备就绪,在其他脚本中添加该监听器将导致设备就绪事件出现一些问题。但是,如果您需要检查其他脚本中的设备就绪状态,您可以为下面的所有脚本添加一个全局变量。如果您不知道如何使用变量创建脚本,这将使其可用于此脚本之后引用的所有脚本。示例:
    var phonegap\u ready=false
  • 在事件侦听器中添加脚本

    document.addEventListener("deviceready", onDeviceReady, false);
    
    function onDeviceReady() {
        phonegap_ready = true;
    }
    
  • 添加jQuery Mobile的源代码以及js事件和代码文件
作为补充说明,在使用jQuery Mobile时检查设备就绪这只是一个标准,在我运行了一些测试之后,phonegap设备就绪的启动速度要比jQuery pageshow事件快得多(考虑到所有DOM操作jqm页面事件,这是有意义的),但是我仍然建议使用它作为警告

一旦在代码中,您就可以使用差异调用
$.when()
异步检查,直到phonegap框架完全运行后才执行phonegap调用。例如,使用先前创建的全局变量:

$(document).on('pageshow', '#login_page', function (parent_event) {
    //do jQuery Mobile event handlings here
    $.when(phonegap_ready === true).then(function () {            
        phonegapApiFunctionsCall();
    });
});

如果这些特性或插件(对phonegap API的调用在phonegap Build 3.0之前作为特性执行,而在phonegap Build 3.0之后,这些特性或插件被替换),您将能够从phonegap FunctionScall()运行API命令并将避免phonegap deviceready事件和jQuery移动页面初始化事件之间的初始化问题。

添加以下行帮助我。。。我做了所有的尝试,但没有任何帮助,所以最后我通过了配置块

<plugin name="cordova-plugin-whitelist" version="1"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-intent href="tel:*"/>
<allow-intent href="sms:*"/>
<allow-intent href="mailto:*"/>
<allow-intent href="geo:*"/>
<platform name="android">
    <allow-intent href="market:*"/>
</platform>
<platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
</platform>


Mate我发现如果我是u,我会使用cordova设置phonegap不容易。我认为科尔多瓦已经接管了电话鸿沟,是最近的一个。这就是你安装它的方式。谢谢你的提醒,我将在下一个项目中查看它。我还认为phonegap在文档和设置方面有很多问题。可悲的是,该项目目前正处于非常高级的转换阶段。cordova是否需要应用程序目标的SDK才能工作?由于我们使用的是Phonegap构建,我们目前没有访问android SDK的权限,与Phonegap相同,他们只是将其命名为不同的库。但是不要说phonegap.js,你必须提到cordova.jsI使用的是ripple emulator版本0.9.19而不是chrome扩展,它显示的是“添加的”日志,而不是实际设备上的“调用的”onetry测试。这是主要问题,我使用的是三星Galaxy S4和android 4.4.2,jQuery移动事件和代码,jquery-mobile-events.js中使用的代码工作正常,但settings_page.js中列出的cordova代码不工作。我使用weinre跟踪已安装应用程序中的移动源,它不会返回任何错误,但也不会创建密钥。我认为我使用的API有问题,你有使用cordova文件API的例子吗?不明白,有什么意义?我也不在模拟器或设备上工作,是不是遗漏了什么?你不需要包含
phonegap.js
,因为phonegap Build在构建过程中会自动注入它。谢谢提醒:)我不知道这是否只是一个特殊情况,但在我的例子中,直到我添加了phonegap.js引用,它才开始工作。在一些线程中,他们要求您添加它,而有些则不添加,我只是添加它作为警告
$(document).on('pageshow', '#login_page', function (parent_event) {
    //do jQuery Mobile event handlings here
    $.when(phonegap_ready === true).then(function () {            
        phonegapApiFunctionsCall();
    });
});
<plugin name="cordova-plugin-whitelist" version="1"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-intent href="tel:*"/>
<allow-intent href="sms:*"/>
<allow-intent href="mailto:*"/>
<allow-intent href="geo:*"/>
<platform name="android">
    <allow-intent href="market:*"/>
</platform>
<platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
</platform>