Попаднах на много въпроси в stackoverflow относно тази грешка, но никой от тях не намери обяснение на правилното решение за моя сценарий.
В моето приложение за Android трябва да позволя на потребителя да щракне върху бутон, за да отвори галерията и да избере изображение. И след това трябва да зареди това конкретно избрано изображение в ImageView в моето оформление (UI).
Правенето на това е доста добре. Следва кодът, който използвам, за да постигна това.
В бутона Качване щракнете ->
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