web-dev-qa-db-ja.com

写真を撮った後にonActivityResultで画像Uriを取得しますか?

私はこのコードを持っています:

_startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), CAMERA_IMAGE);
_

これにより、そのユーザーは写真を撮ることができます。 Uriでその写真のonActivityResultを取得するにはどうすればよいですか? Intent追加ですか? Intent.getData()を使用していますか?

23
Mohit Deshpande
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri u = intent.getData();
}

ちなみに、一部のデバイスにはその意図に関するバグがあります。 この答え を見て、それを回避する方法を知ってください。

30
Cristian

インテントを起動するだけでなく、写真の場所をインテントに伝えるようにしてください。

Uri uri = Uri.parse("file://somewhere_that_you_choose");
Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(photoIntent, CAMERA_IMAGE);

次に、onActivityResult()メソッドが呼び出されたときに、成功した場合は、URIへのストリームを開くだけで、すべてが設定されます。

8
Greg Giacovelli
Uri uri = null;
if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK){
  uri = data.getData();
}
1
anson
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

          Bitmap photo = (Bitmap) data.getExtras().get("data");
          Uri fileUri = Utils.getUri(getActivity(), photo);
    }  
}

public String getRealPathFromURI (Uri contentUri) {
    String path = null;
    String[] proj = { MediaStore.MediaColumns.DATA };
    Cursor cursor = getActivity().getContentResolver().query(contentUri, proj, null, null, null);
    if (cursor.moveToFirst()) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
        path = cursor.getString(column_index);
    }
    cursor.close();
    return path;
}
0
Vignes