Как получить путь от идентификатора курсора в Android

Теперь я продолжаю выбирать несколько изображений и видео, через которые я прошел.

https://github.com/voidberg/DmxMediaPicker это именно то, что мне нужно, но здесь я получаю только тип ,я бы.

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

 if (type == 0) {
idColumn = cur.getColumnIndex(MediaStore.Video.Media._ID);
bucketColumn = cur.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME);
dateColumn = cur.getColumnIndex(MediaStore.Video.Media.DATE_ADDED);
}

else {
idColumn = cur.getColumnIndex(MediaStore.Images.Media._ID);
bucketColumn = cur.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
dateColumn = cur.getColumnIndex(MediaStore.Images.Media.DATE_ADDED);
}

Много раз пытался настроить ниже, но бесполезно:

int id =cur.getInt(idColumn);

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

Если кто-то имеет представление об этом, пожалуйста, помогите решить эту проблему.


person Manoj    schedule 23.12.2014    source источник
comment
вы можете вместо этого фрагмента вставить весь код?   -  person Krupal Shah    schedule 23.12.2014
comment
см. приведенную выше ссылку на github   -  person Manoj    schedule 23.12.2014


Ответы (1)


Будьте осторожны здесь. Вы не можете предполагать, что элемент мультимедиа обязательно соответствует файлу на устройстве. Например, вы можете выбрать изображение или видео из Google+.

В этих случаях содержимое MediaStore.Images.Media.DATA будет пустым.

Правильный способ сделать это — думать не о файлах, а о Uris и потоках. В частности, из Uri элемента мультимедиа можно получить InputStream с его содержимым, используя ContentResolver.

Взгляните на этот пример (взято из этого ответа для изображений):

InputStream inputStream = null;
if (ContentResolver.SCHEME_CONTENT.equals(mediaUri.getScheme())) {
    inputStream = context.getContentResolver().openInputStream(mediaUri);
} else if (ContentResolver.SCHEME_FILE.equals(mediaUri.getScheme())) {
    inputStream = new FileInputStream(mediaUri.getPath());
}

Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
person matiash    schedule 23.12.2014