Я пытаюсь получить путь к видеофайлу для миниатюры видео. Я не уверен, почему он по-прежнему приходит как null после того, как я модифицировал, основываясь на некоторых решениях здесь. Версия android - 6.0.1.Путь к файлу видео для Android из магазина носителей идет как null
Пользователь нажимает кнопку плавающего действия и вызывает галерею видео.
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.addNote);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Video"), REQUEST_TAKE_GALLERY_VIDEO);
}
});
Когда пользователь выбирает желаемое видео из галереи, видео идет к деятельности, которую он будет разобрался.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
Log.d(TAG, "Uri: " + uri);
Log.d(TAG, "Uri authority: " + uri.getAuthority());
String filemanagerstring = uri.getPath();
Log.d(TAG, "filemanagerstring: " + filemanagerstring);
String selectedImagePath = getPath(uri);
Log.d(TAG, "selectedImagePath: " + selectedImagePath);
}
}
Способ получения пути к видеофайлу.
public String getPath(Uri uri) {
Cursor cursor = this.getContentResolver().query(uri, null, null, null, null);
int idx = 0;
//Source not from device capture or selection
if (cursor == null) {
return uri.getPath();
} else {
cursor.moveToFirst();
idx = cursor.getColumnIndex(MediaStore.Video.VideoColumns.DATA);
if (idx == -1) {
Log.d(TAG, "uri path: " + path);
return uri.getPath();
}
}
String path = cursor.getString(idx);
Log.d(TAG, "path: " + path);
cursor.close();
return path;
}
Результаты: Я получил нуль (-1) и получил путь uri, это не правильный путь. Мне нужен полный путь к видеофайлу.
Uri: content://com.android.providers.media.documents/document/video%3A6174
Uri authority: com.android.providers.media.documents
filemanagerstring: /document/video:6174
**uri path: 16842794**
selectedImagePath: /document/video:6174
«Мне нужно полный путь видеофайла "- нет, вам нужна миниатюра для видео. Там не обязательно должен быть «полный путь», потому что не обязательно должен быть файл, не говоря уже о том, что вы можете получить доступ к файловой системе. Откуда этот «Ури»? – CommonsWare
Ури исходит из Uri uri = data.getData(); в onActivityResult. Пользователь выберет видео из галереи (если это то, что вы хотите знать). Благодарим за быстрый ответ! – Meep
Что такое вызов 'startActivityForResult()', который вызывает этот вызов 'onActivityResult()'? – CommonsWare