私は自分のアンドロイドアプリのために、ユーザーがギャラリーから画像をブラウズしてインポートできるようにしました。しかし、通常のサイズの画像や大きなサイズの画像をインポートすると常にクラッシュしますが、非常に小さい画像をインポートするとクラッシュしません。私は、ユーザーが普通の大きさの画像を簡単かつ高速に読み込むことができるようにしたい。ここに私のコードです:ギャラリーから通常サイズの画像をインポートできません
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_in_card);
openGallery();
}
private void openGallery() {
Intent intent = new Intent();
// Show only images, no videos or anything else
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.str_select_pic_gallery)), PICK_IMAGE_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri uri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
setPicture(bitmap);
// Log.d(TAG, String.valueOf(bitmap));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)
private void setPicture (Bitmap b) {
BitmapDrawable drawable;
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
drawable = new BitmapDrawable(getResources(), b);
wholeImage.setBackgroundDrawable(drawable);
} else {
drawable = new BitmapDrawable(getResources(), b);
wholeImage.setBackground(drawable);
}
}
は、しかし、それはエミュレータでクラッシュしていませんが、それはすべての携帯電話に行います。だから私はエラーコードを見つけることができないので、ログcatで印刷されていません。
LogCatを使用して、クラッシュに関連するJavaスタックトレースを調べます。https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – CommonsWare
ここにログする? –
エミュレータでクラッシュすることはありませんが、すべての電話で発生します。今私は何をしますか? – AES