0

次のコードを使用して、Phonegap (cordova 1.9.0) でギャラリーまたはカメラから写真を取得し、ページに含めます。

function getPhotoByGallery() {
    navigator.camera.getPicture(onPhotoSuccess, onFail, {
        quality : 50,
        destinationType: navigator.camera.DestinationType.FILE_URI,
        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
    });
}

function getPhotoByCamera() {
    navigator.camera.getPicture(onPhotoSuccess, onFail, {
        quality : 50
    });
}

function onPhotoSuccess(data) {
    var viewport = document.getElementById('viewport');
    //console.log(data);
    viewport.style.display = "";
    document.getElementById("test_img").src = data;
}

テスト デバイス: Android 4 を搭載した Samsung Galaxy S3。カメラで写真を取得することは問題ありません。しかし、ギャラリーから写真を数回撮ろうとすると、アプリが頻繁にクラッシュします (有用なエラーは発生しません)。(ギャラリーから画像を選ぶときは3回目、5回目など)

発生した問題についてアプリからフィードバックが得られないため、問題の原因が何であるかはわかりません...

4

3 に答える 3

0

デバイスに取り込んだ画像ファイルを取得する許可にアクセスできるはずだと気付くまで、2日間同じ問題が発生していました。デフォルトでは、画像を返す権限がないため、nullが返され、アプリがクラッシュします。

XCodeでCordova/PhoneGapを使用している場合は、wwwフォルダーにConfig.xmlファイルも作成し、イメージファイルにアクセスするためのアクセス許可を与える必要があります。

<feature name="http://api.phonegap.com/1.0/device" />
<feature name="http://api.phonegap.com/1.0/battery"/>
<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/contacts"/>
<feature name="http://api.phonegap.com/1.0/file"/>
<feature name="http://api.phonegap.com/1.0/geolocation"/>
<feature name="http://api.phonegap.com/1.0/media"/>
<feature name="http://api.phonegap.com/1.0/network"/>
<feature name="http://api.phonegap.com/1.0/notification"/>

Androidで作業している場合は、AndroidManifest.xmlファイルに権限を付与します。

config.xmlファイルのすべてをここで見つけることができます: https ://build.phonegap.com/docs/config-xml

Cordova/PhoneGapに問題はありません。

于 2012-10-19T10:12:50.800 に答える
0

Android 4 (Samsung Galaxy III) と PhoneGap 2.0 (PhoneGap Build でビルド) で実行されているアプリで突然同じ問題が発生しました。

補足として、必要な権限は次のとおりです。

<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/file"/>

私が設定したものです(Android 2.2電話で動作します)。

更新 さらにテストした結果、この問題は、Android がより多くのメモリを必要とするとき、たとえば Web カメラを開くときに、開いているアプリを閉じるというよく知られた問題であることが判明しました。

于 2012-10-24T10:41:36.633 に答える
-1

デバイスはルート化されていますか? その場合は、logcat プログラム (alogcat など) を使用して試してみてください。

于 2012-07-13T12:25:52.037 に答える