Я использую 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), оно либо вылетает, либо просто возвращается к предыдущему действию после выбора изображения (это происходит только при отладке).с затмением).