从Gallery获取图片不在设备上工作,但在模拟器中工作

时间:2011-06-11 12:16:18

标签: android gallery picking

我正在使用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而不是普通的Gallery应用程序)时,它会在选择图像后崩溃或只是恢复到之前的活动(这只在调试时发生)与日食)。

1 个答案:

答案 0 :(得分:0)

当我通过意图发送位图数据时,Android不喜欢它。所以我改为首先保存图像,然后发送URI。