0

カメラから画像を取得しようとしています。正常に動作します。写真を撮って画像ビューに表示できます。実は、撮った写真をサーバーに送りたいです。そのために、画像をプルインしてみonActivityResultます。しかし、インテントデータを確認すると、常にnullが返されます。それでも、アプリケーションは正常に実行され、画像が表示されます。インテントデータがnullになるのはなぜですか?手伝っていただけませんか?

コードは次のとおりです。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case ACTION_TAKE_PHOTO_B: {
            if (resultCode == RESULT_OK) {
                        Log.e("TAG","data: "+data);
                    display_Photo();            


            //Process the image to send but, data is null   
            }
            break;
        }

    } 
    }

ログ猫:

データ:Null

4

1 に答える 1

2

使用しているコードには、次の2つのボタンonclickハンドラーがあります。 dispatchTakePictureIntent(int actionCode)

1つのボタンは列挙型で呼び出し、もう1つのボタンは列挙型でACTION_TAKE_PHOTO_B呼び出しますACTION_TAKE_PHOTO_S

を渡す場合、返されるインテントACTION_TAKE_PHOTO_Bの期待される結果はです。datanull

その理由はdispatchTakePictureIntent、インテントを呼び出す前に、渡されMediaStore.ACTION_IMAGE_CAPTUREたものに基づいて追加のインテントパラメータを設定するためです。actionCode

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));

ACTION_IMAGE_CAPTUREのドキュメントによると:

呼び出し元は、このイメージが書き込まれる場所を制御するために、追加のEXTRA_OUTPUTを渡すことができます。EXTRA_OUTPUTが存在しない場合、小さいサイズの画像が追加フィールドのビットマップオブジェクトとして返されます。

したがって、EXTRA_OUTPUTパラメータが設定されているため、イメージはインテント内のデータとして返されるのではなく、ディスクに書き込まれます。mCurrentPhotoPathファイルの場所を取得するには、インテントが起動される前に、どちらに書き込まれるかを調べることができます 。

于 2012-11-08T23:10:04.173 に答える