android - PhoneGap/Cordova 相机 onResume 返回空对象

标签 android cordova phonegap onresume

所以我有一个适用于 Android 的 Cordova 应用程序,它使用官方 Cordova 相机插件。 Android 在拍照时杀死后台 Cordova 任务后,应用程序使用 onResume 事件来恢复应用程序状态。

我正在遵循 Cordova 文档中的最佳实践,但仍然无法正确完成它。当用户拍照时,Android 会在后台终止 Cordova 任务,并且根据文档,相机插件应返回带有相机插件状态的挂起结果对象。但这样的事情根本没有发生。我写了简单的调试代码:

事件被添加到应用程序中,如下所示:

    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);
}

控制台输出为:

恢复事件被触发! 找到之前存储的状态: { “拍照”:真实, “图像URI”:“” } { “isTrusted”:假, “行动”:“恢复” } 未定义

很明显,当 Cordova 应用程序重新启动时,会调用 onResume 事件,但 event.pendingResult 不会从官方 Cordova 相机插件返回。有什么解决办法吗?

我使用的是 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);
}

但仍然没有运气。

最佳答案

终于找到解决办法了。问题是cordova-plugin-facebook4(这里是版本1.9.1)。看起来,Facebook 插件与 Cordova 恢复回调发生了困惑。 (更多详细信息可以在这里找到:https://github.com/Wizcorp/phonegap-facebook-plugin/issues/1315)。

要修复此问题,应导航至

\platforms\android\CordovaLib\src\org\apache\cordova\CordovaInterfaceImpl.java

第 134 行有一个 if(callback == null && initCallbackService != null),应更改为 if(initCallbackService != null)。就这样,不幸的是 3 天的调试已经过去了。

关于android - PhoneGap/Cordova 相机 onResume 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867486/

相关文章:

android - 防止重新打开应用程序 Android Developer

ios - 适用于 IOS 11 及更高版本的 Ionic 1 应用程序中的内容重叠

ios - iTunes Connect 中的应用程序图标丢失

ios - Ionic - 为 Windows 上的 IOS 构建(适用于最新的 IOS 和 Ionic)

android - Apache Cordova - 无法生成 v1 签名

java - 使用 TimeZone 解析日期 (java/android)

android - 尝试将 Android Gradle 项目从 Groovy 迁移到 Kotlin 时出现 CacheOpenException

java - 移动设备上连接的适当超时是多少?

android - Phonegap 如何使用 Google Play 商店 key 签署应用程序

android - 错误 - 以下启动画面或图标文件不存在 :/res/icons/android/mipmap-hdpi/ic_launcher. png