Получить изображение Uri в onActivityResult после фотосъемки? - PullRequest
22 голосов
/ 20 февраля 2011

У меня есть этот код:

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), CAMERA_IMAGE);

Это позволяет этому пользователю сделать фотографию. Теперь, как мне получить Uri этой фотографии в onActivityResult? Это Intent дополнительно? Это через Intent.getData()?

Ответы [ 4 ]

30 голосов
/ 20 февраля 2011
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri u = intent.getData();
}

Кстати ... есть ошибка с этим намерением в некоторых устройствах.Взгляните на этот ответ , чтобы узнать, как его обойти.

8 голосов
/ 20 февраля 2011

Вместо того, чтобы просто запустить намерение, также обязательно укажите намерение, где вы хотите фотографию.

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, и все это должно быть установлено.

2 голосов
/ 08 февраля 2017
Uri uri = null;
if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK){
  uri = data.getData();
}
0 голосов
/ 16 апреля 2018
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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...