Получение изображения из галереи не работает на устройстве, но работает в эмуляторе - PullRequest
0 голосов
/ 11 июня 2011

Я использую startActivityForResult для получения изображения из галереи Android, однако это не работает на моем устройстве, но все же работает нормально на эмуляторе.

Я запускаю действие следующим образом:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

Я прочитал результат примерно так:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SELECT_IMAGE)
    {
        if (resultCode == Activity.RESULT_OK)
        {
            Uri selectedImage = data.getData();
            Bitmap bitmap;
            try
            {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
            }
            catch (FileNotFoundException e)
            {
                Toast.makeText(TweetMyPic.this, "Failed to load image: " + e.toString(), Toast.LENGTH_LONG).show();
                return;
            }
            catch (IOException e)
            {
                Toast.makeText(TweetMyPic.this, "Failed to load image: " + e.toString(), Toast.LENGTH_LONG).show();
                return;
            }

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 

            sendImage(baos.toByteArray());
        }
    }
}

Функция sendImage открывает новое действие с данными.Это прекрасно работает, когда я использую эмулятор, но когда я использую свое устройство (на котором вместо обычного приложения Галерея установлен Cooliris), оно либо вылетает, либо просто возвращается к предыдущему действию после выбора изображения (это происходит только при отладке).с затмением).

1 Ответ

0 голосов
/ 11 июня 2011

Android не нравится, когда я отправляю растровые данные через намерение. Поэтому я решил сначала сохранить изображение, а затем отправить URI.

...