Android Samsung: приложение камеры не возвращает intent.getData () - PullRequest
8 голосов
/ 14 февраля 2011

Я занимаюсь разработкой приложения, в котором изображение взято из собственного приложения камеры.должен быть показан пользователю.Код, который я сделал:

/* Intent */
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, TAKE_PICTURE);

/* Result */
onActivityResult(int requestCode, int resultCode,
        Intent returnIntent) {
    if(requestCode == TAKE_PICTURE) {
        //picture from Camera
        if (resultCode == Activity.RESULT_OK) {
            if(returnIntent != null) {
                try {
                    // Get the file path where the image is stored.
                    // This runs fine on all devices, except Samsung ones.
                    Uri selectedImage = returnIntent.getData();

                    if(selectedImage == null) {
                        if(returnIntent.getExtras() != null &&
                            returnIntent.getExtras().get(AppConstants.DATA) != null) {

                            // But, I get the image Bitmap here. Means the image is stored in disk.
                            Bitmap bmp = (Bitmap) returnIntent.getExtras().get(AppConstants.DATA);
                        }
                    }
                } catch (Exception e) {
                    //
                }
            }
        }
    }
}

Проблема здесь в том, что приведенный выше код прекрасно работает на всех устройствах, которые я пробовал (HTC, SE), но почему-то не работает на устройствах Samsung."Uri selectedImage = returnIntent.getData ();"никогда ничего не возвращает.Поскольку все мое приложение построено на этой логике сохранения пути к файлу, я не могу продолжить.Есть ли решение людей.

Ответы [ 2 ]

11 голосов
/ 14 февраля 2011

См. Укажите имя файла для снимка, который нужно сделать для кода, чтобы указать параметр EXTRA_OUTPUT для Intent, который позволяет указать имя файла для изображения. Запомните имя файла, когда вызывается результат действия, и используйте его, если intent.getData равен NULL

И если вы прочтете другие комментарии в этом отчете об ошибке, вы поймете, сколько проблем возникает у этой фотографии на Android.

3 голосов
/ 29 мая 2012

Лучше всего создать путь к файлу, в который вы хотите сохранить изображение, и сохранить его в переменной-члене.Затем, при вызове действия камеры, поместите его (как Uri) в дополнительный MediaStore.EXTRA_OUTPUT.

Обязательно переопределите onSaveInstanceState () и onRestoreInstanceState () и сохраните / восстановите этот путь должным образом.Это обеспечит его сохранение, если система решит перезапустить вашу деятельность в это время (что очень возможно из-за изменений ориентации и / или из-за нехватки памяти).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...