Android 如何从视频文件的内容URI获取文件路径?
我想从Android存储中附加图像或视频文件。当我从库中选择视频时,它返回内容uri路径 如何从内容URI获取扩展名为的文件路径 我尝试了以下代码,但它在棒棒糖中返回null:Android 如何从视频文件的内容URI获取文件路径?,android,uri,android-contentprovider,Android,Uri,Android Contentprovider,我想从Android存储中附加图像或视频文件。当我从库中选择视频时,它返回内容uri路径 如何从内容URI获取扩展名为的文件路径 我尝试了以下代码,但它在棒棒糖中返回null: void pickVideo() { Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT); videoIntent.setType("video/*"); startActivityForResult(videoIntent, PI
void pickVideo() {
Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT);
videoIntent.setType("video/*");
startActivityForResult(videoIntent, PICK_VIDEO_FILE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (resultCode != Activity.RESULT_OK)
return;
switch (requestCode) {
case PICK_VIDEO_FILE:
Uri videoUri = data.getData();
String path = getRealPathFromURI(getContext(), videoUri);
Log.d("Video uri path", "path" + path);
if (mChooseFileDialogListener != null) {
mChooseFileDialogListener.onVideoClick(videoUri, HealthRecordViewModel.FILE_TYPE_VIDEO);
}
break;
}
}
}
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Video.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
如何获取扩展名为的文件路径
你没有。不要求用户选择一段内容,该内容保存为您具有读取权限的位置中的文件。而且不要求ContentProvider提供某种将Uri转换为文件路径的方法
使用ContentResolver和openInputStream读入Uri标识的内容。我对android编程不熟悉。您能给出一些与此相关的示例吗?@Pulse:getContentResolver.openInputStreamvideoURI.openInputStreamuri返回InputStream对吗?我如何将其作为附件使用?我必须保存获得的文件,如果我单击保存的文件,它应该使用适当的应用程序打开。*将其另存为attachment@Pulse:如何将此文件及其作为附件使用?-使用该输入流将内容复制到您控制的文件中。然后,将副本视为附件。当您的进程结束时,您对该Uri标识的内容的权限将失效,或者可能更早。如果您在Android 4.4+上切换到ACTION_OPEN_DOCUMENT,您可以尝试使用takePersistableUriPermissions来延长Uri的使用时间,但即使如此,用户也可以从存储该文档的任何位置删除该文档。附上我总是意味着复印一份。