このエラーに関してstackoverflowで多くの質問に出くわしましたが、私のシナリオの適切な解決策を説明しているものはありませんでした。
私のAndroidアプリケーションでは、ユーザーがボタンをクリックしてギャラリーを開き、画像を選択できるようにする必要があります。そして、その特定の選択した画像を私のレイアウト(UI)のImageViewにロードする必要があります。
これを行うと、かなり問題ありません。以下は、これを達成するために使用しているコードです。
[アップロード] ボタンでクリック ->
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), REQUEST_UPLOAD_IMG);
そして onActivityResult ->
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
//super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK)
{
if(requestCode==REQUEST_UPLOAD_IMG)
{
Uri selectedImageURI = data.getData();
uploadImgVW.setImageURI(selectedImageURI);
}
else
{
Toast.makeText(MainActivity.this, "You can only select an Image.", Toast.LENGTH_LONG).show();
}
}
}
ただし、ユーザーがより大きなサイズ ( 2MBなど) の画像を選択すると、アプリケーションは次のエラーで終了します。しかし、通常の (KB レベルの) 画像では問題なく、この問題 (このエラー状況を処理するには) に対して何ができるか疑問に思っています。ありがとう...
エラー ->
06-20 16:43:58.445: E/AndroidRuntime(2075): FATAL EXCEPTION: main
06-20 16:43:58.445: E/AndroidRuntime(2075): java.lang.OutOfMemoryError: bitmap size exceeds VM budget