Android ギャラリーから画像を取得するために startActivityForResult を使用していますが、これは私のデバイスでは機能しませんが、エミュレーターでは正常に機能します。
次のようにアクティビティを開始します。
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 を使用している) を使用している場合、画像を選択した後にクラッシュするか、以前のアクティビティに戻るだけです (これはデバッグ時にのみ発生します)。日食で)。