我想从图库中选择上传视频。
我正在使用Intent从设备中选择视频:
Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Video"), PICK_VIDEO_REQUEST);
之后:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) {
Uri filePath = data.getData();
try {
String[] projection = {MediaStore.Video.Media.DATA};
Cursor cursor = getContentResolver().query(filePath, projection, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String videoPath = cursor.getString(columnIndex);
} catch (Exception e) {
Log.e("error", e.getMessage());
}
}
}
}
但是当我在onActivityResult()中获取路径时,它返回null。 我发现牛轧糖有变化,但无法找到解决办法。
我的代码在除了nougat之外的所有版本的android中都有效。
请任何人帮忙。
答案 0 :(得分:2)
"Android-Multipicker-Library"允许您在Android中选择任何类型的路径,特别是" Nougat"
答案 1 :(得分:0)
我的代码在除了nougat之外的所有版本的android中都有效。
不是真的。它可能适用于几种设备上的几种情况。
您的代码假定您获得的Uri
:
content
计划MediaStore.Video.Media.DATA
Uri
的某些值
这些都不一定是真的:
Uri
计划的file
ACTION_GET_CONTENT
实施video/*
,他们可以将所需的内容交回Uri
MediaStore
以外的提供商不必尊重MediaStore.Video.Media.DATA
MediaStore
索引可移动存储上的媒体,其路径对您无用,因为您对Android 4.4 +上的可移动存储上的任意位置没有读取权限要使用content
Uri
,请在openInputStream()
上致电ContentResolver
,以获取内容的InputStream
。可以直接使用InputStream
,也可以使用它将内容的副本复制到您控制的文件上的某些FileOutputStream
。