如何在Android L上选择图像或视频?

时间:2015-07-13 09:41:20

标签: android android-5.0-lollipop

我正在使用下面的代码,它在android 5以下正常工作。我可以从SD卡中选择图像或视频。

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("video/* image/*");
getActivity().startActivityForResult(photoPickerIntent, 1);

但是在Android L上,它只显示视频。 尝试搜索,但没有找到任何东西,任何帮助将不胜感激。

3 个答案:

答案 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函数:

https://stackoverflow.com/a/20559175/434400