Я пытаюсь поделиться видео (в социальных сетях) в приложении, которое я создаю. Я использую намерения, для которых мне нужен Uri для разбора. Я пытаюсь выбрать элементы в простом файловом менеджере (активность списка), а затем делиться ими при длительном нажатии. Таким образом, мне нужен следующий код, чтобы получить Uri видео для его использования в намерениях.CursorIndexOutOfBoundsException при получении содержимого VideoUri из файла
ContentResolver contentResolver = ctx.getContentResolver();
String videoUriStr = null;
long videoId = -1;
Uri videosUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Video.VideoColumns._ID };
// TODO This will break if we have no matching item in the MediaStore.
Cursor cursor = contentResolver.query(videosUri, projection,
MediaStore.Video.VideoColumns.DATA + " =?",
new String[] { fileToShare }, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
videoId = cursor.getLong(columnIndex);
cursor.close();
if (videoId != -1)
videoUriStr = videosUri.toString() + "/" + videoId;
{
return videoUriStr;
}
UPDATE Первые несколько элементов на файловом менеджере ListActivity файла разделит правильно. Но последние видео показывают ошибку.
Error: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
Пути изменились с 4.2 и отличаются от предыдущих 4.2. Используйте Environment.getExternalStorageDirectory().getPath(), чтобы получить базовый путь к SD-карте, а не жестко кодировать его. –
Не будучи жестко запрограммированным. Я использовал Environment.getExternalStorageDirectory(). GetPath() – pheno