我正在使用下面的代码,它在android 5
以下正常工作。我可以从SD卡中选择图像或视频。
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("video/* image/*");
getActivity().startActivityForResult(photoPickerIntent, 1);
但是在Android L
上,它只显示视频。
尝试搜索,但没有找到任何东西,任何帮助将不胜感激。
答案 0 :(得分:4)
您好@Mohit可以将此解决方案用于图像和视频
Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("*/*");
getActivity().startActivityForResult(photoPickerIntent, 1);
对于图片和视频,您可以使用setType(*/*);
此处 ACTION_GET_CONTENT 仅提供图库选择,而 ACTION_PICK 提供更多选项以从不同的操作中选择图片和视频,因此根据@DipeshDhakal回答您应该只使用<强> ACTION_GET_CONTENT 强>
这也适用于android L和api 10。
答案 1 :(得分:2)
使用Intent.ACTION_GET_CONTENT
Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("video/*, images/*");
startActivityForResult(photoPickerIntent, 1);
答案 2 :(得分:0)
遇到了类似的问题。在5.0及以下版本上运行的代码在5.1+上开始破解,并且仅通过传入的第一种类型进行过滤。
一位同事提出了以下问题,我想我会分享:
我们之前使用过以下意图:
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/*,video/*");
和以下代码从任何用户选择的路径获取路径:
public static String getFilePathFromURI(Uri imageUri, Activity context) {
String filePath = null;
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(imageUri,
filePathColumn, null, null, null);
if (cursor != null) {
try {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
filePath = cursor.getString(columnIndex);
} finally {
cursor.close();
}
}
return filePath;
}
现在:
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("*/*");
String[] mimetypes = {"image/*", "video/*"};
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
要获取路径,请在此答案中找到getPath函数: