2012-10-22 3 views
1

응용 프로그램에서 PhoneGap + Sencha Touch를 사용하고 있습니다. 나는 사진을 찍고 서버에 업로드 할 수 있었다. 사진 라이브러리에서 사진을 선택하는 데 문제가 있습니다.PhoneGap destinationType 속성이 잘못된 파일을 반환합니다. uri

selectPicture: function() { 
    navigator.camera.getPicture(this.uploadPicture.bind(this), this.getPictureError.bind(this), { 
     // camera options 
     quality: 50, 
     destinationType: navigator.camera.DestinationType.FILE_URI, 
     sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY 
    }); 
    } 

destinationType 속성에 문제가 있다고 생각합니다. 내 uploadPicture 함수에서 imageURI는 'content : // media/external/images/media/[some random number]'와 같은 디렉토리를 반환합니다.

은 내가 imageURI 같은 뭔가해야한다고 생각 : '파일 : //storage/sdcard/DCIM/Camera/myimage.jpg'

내가 window.resolveLocalFileSystemURI를 사용하여 시도하고 사진을 복용하는 경우 그것을 잘 작동합니다 , 그러나 그림을 선택할 때 아닙니다.

selectPicture: function() { 
    navigator.camera.getPicture(this.resolveFileURI.bind(this), this.getPictureError.bind(this), { 
     // camera options 
     quality: 50, 
     destinationType: navigator.camera.DestinationType.FILE_URI, 
     sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY 
    }); 
}, 

resolveFileURI: function (entry) { 
    console.log(entry); 
    window.resolveLocalFileSystemURI(entry, this.uploadPicture.bind(this), this.fail.bind(this)); 
}, 

uploadPicture: function (entry) { 
    console.log(entry.fullPath) 
} 

가 로그 캣에 따르면 나는 심지어 resolveFileURI 기능으로하지 않습니다 : 나는 사진이 photolibrary (나는 엽차 터치 2를 사용하고 있습니다)를 형성 선택하고자 할 때 여기 내 코드입니다. 사실 내 응용 프로그램이 충돌합니다. logcat의 오류 :

10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : 치명적인 예외 : 주 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : java.lang .RuntimeException : 결과 ResultInfo {who = null, request = 17, result = -1, data = 의도 {dat = content : // 미디어/외부/이미지/미디어/584}}가 {com.dwmobile.android /com.dwmobile.android.AndroidSencha} : java.lang.NullPointerException 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.ActivityThread.deliverResults (ActivityThread.java:3141) 10- 23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.ActivityThread.handleSendResult (ActivityThread.java:3184) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app .ActivityThread.access $ 1100 (ActivityThread.java:130) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1243) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.os.Handler.dispatchMessage (Handler.java:99) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.os.Looper.loop (Looper.java:137) 10 -23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.ActivityThread.main (ActivityThread.java:4745) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : 자바. lang.reflect.Method.invokeNative (네이티브 메소드) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : java.lang.reflect.Method.invoke (Method.java:511) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) 10-23 14:39:24 .552 : E/AndroidRuntime (2975) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : at dalvik.system .NativeStart.main (네이티브 메서드) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : 원인 : java.lang.NullPointerException 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : org.apache.cordova.CameraLauncher.onActivityResult (CameraLauncher.java:453) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : org.apache.cordova.DroidGap.onActivityResult (DroidGap.java:823)) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.Activity.dispatchActivityResult (Activity.java:5192) 10-23 14 : 39 : 24.552 : E/AndroidRuntime (2975) : android.app.ActivityThread.deliverResults (ActivityThread.java:3137)

+0

확실히 폰갭가 작동하는지 확인? –

+0

전화 걸기가 작동 중입니다. 내 애플 리케이션에서 온통 전화 갭을 사용하고 있으며 이것이 작동하지 않는 곳입니다. 나는 또한 사진을 찍고 잘 업로드 할 수있다. 사진 라이브러리에서 사진을 선택하면 문제가 생길 수 있습니다. – squistbe

+0

phonegap 버전을 변경해보세요. 내 응용 프로그램은 sencha touch 2와 phonegap 1.5를 사용합니다. 그것은 camare 및 라이브러리와 함께 잘 작동합니다. –

답변

2

Android에서 정확합니다. 컨텐츠 URI를 사용하여 이미지 소스 속성을 설정할 수 있습니다. 심지어 그 uri를 FileTransfer.upload으로 보낼 수도 있습니다.그러나 실제 파일 형식 인 uri를 가져 오려면 window.resolveLocalFileSystemURI으로 보내면 성공 콜백에서 파일 경로를 제공합니다.

관련 문제