アンドロイドのアプリを開発していて、私のアプリにカメラのボタンがあります。以前は、写真を撮ってからonActivityResultの返信データがnullの状態になりました。これはカメラの予想される動作で、EXTRA_OUTPUT
をインテントに入れると、null
が返されます。その理由から、私はヌルチェックコードを実行し、それはうまくいった。Androidのカメラが空のインテントを返す
もう一度数日後、私はテストしました。私はまだ同じ問題に再び落ちた。しかし今度はdata
はnull
ではありません。 data
はintent
とdata.getData()
のように空の意図がありますnull
となります。data.getData() == null
をチェックしてこれを修正してもう一度動作します。私はそれがなぜそうではないのですか?何が起こっていたのか不思議です。そのため私は再度プロダクションにアップロードする必要があります。私はEXTRA_OUTPUTに置けば:-(
//camera intent
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra("requestCode", Constants.REQUEST_IMAGE_CAPTURE);
Intent chooseImageIntent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
chooseImageIntent.setType("image/* video/*");
chooseImageIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
chooseImageIntent.putExtra("requestCode", Constants.REQUEST_CHOOSE_FROM);
//app can use camera
if (takePictureIntent.resolveActivity(mContext.getPackageManager()) != null) {
//add output file path which camera will save image to
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Helpers.getOutputMediaFileUri());
//create choose
Intent chooser = Intent.createChooser(chooseImageIntent, "Select From");
//add take camera intent as first intent
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[]{takePictureIntent});
//open up dialog
((Activity) mContext).startActivityForResult(chooser, Constants.REQUEST_CHOOSE_FROM);
} else {
((Activity) mContext).startActivityForResult(chooseImageIntent, Constants.REQUEST_IMAGE_GALLERY);
}
EDITEDが
私は何を私は理解していないことdata
を返すことである。問題を解決するために、どのように私を知っていることはnull
でなければなりません。ほとんど重要なこと私は数週間前に実装したコード、私はかなりdata
返信null
と突然それはnull
値ではないことを確信しています。
'data.getExtras()。get(" data ");'を使用して、 'data.getData()'を使わないでください。 –
私が 'data.getExtras()'を使わない理由は、extra_outputをインテントで渡すと 'data'が' null'になります。それは私が間違っていない場合は事実だ – Sanny