画像をアルバムから選択して、トリミングする際に下記のようなコードを書いたのですが、versionが19以下の時のif分の方に入ると、while(bitmajp == null)内のcatchに入り、エラーが出てしまいます。
その際に、二度onActivityResultに入るのですが、二度目のIntent dataの値がnullになってしまうのが原因かと思ったのですが、修正方法が分からず困っています。
教えていただければ幸いです!
""APP.java""
public static int REQUEST_GALLERY = 200;
public static int REQUEST_KITKAT_GALLERY = 300;
public static int REQUEST_CROP_PICK = 400;
""CameraActivity.java""
if (Build.VERSION.SDK_INT < 19){
intentAlbum = new Intent(Intent.ACTION_PICK);
intentAlbum.setAction(Intent.ACTION_GET_CONTENT);
intentAlbum.setType("image/*");
startActivityForResult(intentAlbum, APP.REQUEST_GALLERY);
} else {
intentAlbum = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intentAlbum, APP.REQUEST_KITKAT_GALLERY);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){ <-------二回目に入ってきた時にdataがnullになる
if (requestCode == APP.REQUEST_GALLERY||requestCode == APP.REQUEST_KITKAT_GALLERY) {
if (resultCode == RESULT_OK) {
try {
InputStream stream = getContentResolver().openInputStream(data.getDat a());
Bitmap bmp = BitmapFactory.decodeStream(stream);
stream.close();
Uri uri = data.getData();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(uri);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, APP.REQUEST_CROP_PICK);
} catch (Exception e) {
} } else if (resultCode == RESULT_CANCELED) { btnTake.setClickable(true); btnAlbum.setClickable(true); } } if(requestCode == APP.REQUEST_CROP_PICK) { Bitmap bitmap = null; int n =0; while (bitmap == null){ n++; try{ bitmap = data.getExtras().getParcelable("data"); }catch (java.lang.Exception e){ btnTake.setClickable(true); <---------catchに入ってエラーが出る btnAlbum.setClickable(true); return; } } cameraPreview.createView(bitmap); } }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。