PhoneGap / Cordova Camera onResume返回空对象

时间:2017-10-21 19:57:03

标签: android cordova phonegap onresume

所以我有一个使用官方Cordova Camera插件的Android Cordova应用程序。在拍摄照片后Android杀死背景Cordova任务后,应用程序使用onResume事件恢复应用程序状态。

我遵循Cordova文档中的最佳做法,但仍然没有运气来正确完成它。当用户拍照时,Android会在后台杀死Cordova任务,并且根据文档,相机插件应该返回具有相机插件状态的pendingResult对象。但完全没有这样的事情发生。我编写了简单的调试代码:

事件会像这样添加到应用程序:

    function onDeviceReady() {
        document.addEventListener("pause", onPause, false);
        document.addEventListener("resume", onResume, false);

......更多代码......

   function onResume(event) {
        console.log("on resume event fired !!!");
        var storedState = window.localStorage.getItem(APP_STORAGE_KEY);
        if(storedState) {
            appState = JSON.parse(storedState);
            str = JSON.stringify(appState, null, 4);
            console.log("found previously stored state: "+str);
        }
        console.log(JSON.stringify(event, null, 4));
        console.log(event.pendingResult);
}

控制台输出为:

on resume event fired !!! found previously stored state: { "takingPicture": true, "imageURI": "" } { "isTrusted": false, "action": "resume" } undefined

很明显,在重新启动Cordova应用程序时会调用onResume事件,但是没有从官方Cordova相机插件返回event.pendingResult。任何想法如何解决它?

我使用的是Cordova 7.1.0和cordova-plugin-camera版本2.4.1,在运行Android 5.0.2的LG L90和运行Android 6.0的LG G3上进行了测试。

聚苯乙烯。还尝试将事件监听器移动一级,如下所示:

function bodyLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
    document.addEventListener("pause", onPause, false);
    document.addEventListener("resume", onResume, false);
}

但仍然没有运气。

1 个答案:

答案 0 :(得分:3)

终于找到了解决方案。问题是cordova-plugin-facebook4(此处为1.9.1版本)。看来,facebook插件与Cordova恢复回调混乱。 (更多细节可以在这里找到:https://github.com/Wizcorp/phonegap-facebook-plugin/issues/1315)。

要修复它,应该导航到

  

\平台\机器人\ CordovaLib \ SRC \组织\阿帕奇\科尔多瓦\ CordovaInterfaceImpl.java

并在第134行有if(callback == null && initCallbackService != null),应更改为if( initCallbackService != null)。就是这样,不幸的是,3天的调试都没有了。