私はいくつかのAndroidアプリを開発しています。ギャラリーで画像を選択し、Fragmentでトリミングしたい。このコードは、Sony、Samsung、Nexus、AOSP では機能しますが、LG Optimus フォン (Optimus G Pro など) では機能しません。画像のトリミングが完了しても返されず、onActivityResultコールバックも呼び出されません。この問題を教えてください。サンプルコードはこちら。
インテント コードを要求しています。
getView().findViewById(R.id.info_img).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("noFaceDetection", true);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, 0);
}
});
onActivityResultコールバックです。Fragment クラスでオーバーライドされます。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == getActivity().RESULT_OK) {
Bitmap bitmap;
try {
Uri selectedImage = data.getData();
InputStream imageStream = getActivity().getContentResolver().openInputStream(selectedImage);
bitmap = BitmapFactory.decodeStream(imageStream);
} catch (Exception e) {
bitmap = (Bitmap) data.getExtras().get("data");
}
if (bitmap != null){
// TODO : It must Worked at here!!
}
}