所以我有一个使用官方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);
}
但仍然没有运气。
答案 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天的调试都没有了。