ギャラリーからデバイスで動作するのではなく、エミュレータで写真を取得する

StackOverflow https://stackoverflow.com/questions/6315866

  •  26-10-2019
  •  | 
  •  

質問

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があります)、画像を選択した後にクラッシュするか、以前のアクティビティに戻ります(これはデバッグ時にのみ発生しますEclipse)。

役に立ちましたか?

解決

Androidは、意図でビットマップデータを送信するときに気に入らない。それで、私は最初に画像を保存し、次にURIを送信するようになりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top