私のアプリの機能の 1 つにカメラがあります。ユーザーが写真を撮ると、アプリが画像を表示します。
StartActivityForResult を使用して ACTION_IMAGE_CAPTURE でインテントを開始し、onActivityResult で応答をキャプチャします。通常は、onActivityResult で受け取ったインテントでgetData()を呼び出すだけで、MediaProvider のコンテンツ uri を取得できます。
私の問題は次のとおりです。私のテスト デバイスの 1 つである Huawei ALE-L21 では、onActivityResult で取得したインテントにはデータがありませんが、代わりにパーセル可能なエクストラがあります。そこからユーザーの写真を取得するにはどうすればよいですか? Android Studio もパーセル可能なエクストラの名前を教えてくれません
免責事項: このコードをフラグメントで使用しているため、 getActivity() を呼び出します
これは私がカメラを取得するために使用するものです。
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, getResources().getInteger(R.integer.RQ_PERMISSION_WRITE_EXTERNAL_STORAGE));
}
そして、これが私のonActivityResultのコードです
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
super.onActivityResult(requestCode, resultCode, resultIntent);
switch (requestCode) {
case 1: //RQ_ImageCapture
case 2: //RQ_ImageSelected
if (resultIntent != null) {
try {
Uri selectedImage = resultIntent.getData();
if(selectedImage != null) {
Bitmap bitmap =
MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImage);
setImageAsBackground(selectedImage, bitmap);
}
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}