2017-10-21 10 views
1

그래서 공식 Cordova 카메라 플러그인을 사용하는 Android 용 Cordova 앱이 있습니다. 응용 프로그램은 사진을 찍을 때 안드로이드가 배경 코르도바 작업을 죽인 후 응용 프로그램 상태를 복원하기 위해 onResume 이벤트를 사용합니다.PhoneGap/Cordova 카메라 onResume이 빈 객체를 반환합니다.

나는 코르도바 문서에서 모범 사례를 따르고 있으며 제대로 수행하는 데 운이 없다. 사용자가 사진을 찍을 때 Android는 백그라운드에서 Cordova 작업을 중단하고 문서에 따르면 카메라 플러그인은 카메라 플러그인 상태로 pendingResult 객체를 반환해야합니다. 그러나 이런 일은 전혀 일어나지 않습니다. 이벤트는 다음과 같이 앱에 addedd된다

: 나는 간단한 디버깅 코드를 작성했습니다 ....

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

코르도바 앱을 사용할 때 명확하게 onResume 이벤트가 호출됩니다. 다시 시작되었지만 공식 Cordova 카메라 플러그인에서 event.pendingResult가 반환되지 않았습니다. 어떤 아이디어로 그것을 고치는 법?

Android 5.0.2 및 Android 6.0을 실행하는 LG G3에서 실행되는 LG L90에서 테스트 한 Cordova 7.1.0 및 cordova-plugin-camera 버전 2.4.1을 사용하고 있습니다.

ps. 또한 이동 이벤트 리스너를 다음과 같이 한 레벨 위로 올리려고 시도했습니다.

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

여전히 운이 없습니다.

답변

2

마지막으로 발견 된 솔루션. 문제는 cordova-plugin-facebook4 (여기서 버전 1.9.1)입니다. 그것이 나타나면, facebook plugin은 Cordova resume callback으로 엉망이됩니다. (자세한 내용은 여기에서 찾을 수 있습니다 : https://github.com/Wizcorp/phonegap-facebook-plugin/issues/1315).

그것을 해결하기 위해, 하나는

\ 플랫폼 \

로 이동해야 안드로이드 \ CordovaLib \ SRC \ 조직 \ 아파치 \ 코르도바 \ CordovaInterfaceImpl.java

라인 (134) 상에 if(callback == null && initCallbackService != null)있다 if(initCallbackService != null)으로 변경해야합니다. 불행하게도 3 일간의 디버깅이 끝났습니다.

+0

나는 당신을 사랑합니다,이 대답은 금입니다! 너는 너무 많이 @ peterPP1 –