3

cordova 3.1.0 を実行している phonegap (cordova) アプリを持っています。

navigator.camera.getPicture(success,fail,options)

オプション付き

var options={ 
        destinationType: navigator.camera.DestinationType.FILE_URI,
        sourceType: navigator.camera.PictureSourceType.SAVEDPHOTOALBUM,
        encodingType: navigator.camera.EncodingType.JPEG,
        mediaType: navigator.camera.MediaType.Picture
}

ユーザーが写真を選択した後、成功のコールバックは呼び出されません。

私が電話したら

navigator.camera.getPicture(success,fail,options)

ここでも、最初の getPicture からの成功のコールバックが、最初のステップで選択された写真で呼び出されます。

CameraLauncher.java (395 行目以降) を調べてみましたが、呼び出しているようです。

this.callbackContext.success(uri.toString());

onActivtyResult ですが、これは次の getPicture() 呼び出しまで返されないようです。

他の誰かがこれに出くわしますか?

さらに掘り下げると、カメラから getPicture を呼び出すときにも同じことが起こっていることがわかります。

カメラのアクティビティが終了したときに Web ビューが再開されていないため、コールバックがどこにも行かないためではないかと思いますが、これはせいぜい野生の憶測です。

24 時間後、Cordova 3.1.0.jar に更新し、3.1 jar を既存の 3.0 プロジェクトに直接ドロップすると、この問題が解決したようです。

4

2 に答える 2

1

バーコード スキャナーの同様の問題について、こちらに記載されている解決策を試しましたが、うまくいきました。https://github.com/zeroasterisk/MeteorRider/issues/16 (ここから参照: https://github.com/wildabeast/BarcodeScanner/issues/107 )

要約すると、Android イベント パイプラインが「詰まる」ように見えます。通常の Cordova プラグイン呼び出しの前にこのコードを実行してクリアすることができます。

if (device.platform === 'Android') {
  setInterval(function () {
     cordova.exec(null, null, '', '', [])
  }, 200);
}
于 2014-10-02T18:07:27.237 に答える
1

そのため、Android では、getPicture の 2 回目の要求によって getPicture のコールバックのみがトリガーされていました。

これは、cordova インストールを更新し、空の Android プロジェクトを作成してから、そこから /platforms/android/libs/cordova-3.1.0.jar を既存のプロジェクトの /platforms/android/libs にコピーし、cordova- を削除することで解決しました。 3.0.0.jar

これで誰かが1時間か3時間節約できることを願っています...

于 2013-11-07T08:37:02.490 に答える