无法从nexus 5 marshmallow中的Google照片应用中挑选照片和视频

时间:2017-02-06 10:10:59

标签: android android-gallery

我在使用“google photos”应用程序在nexus 5中同时拾取照片和视频时遇到问题。在其他应用程序中它工作正常,问题只有谷歌照片。请帮助我,以便我可以看到完整的图库(不仅仅是图片或视频)。

这是我按下的按钮:

@Click(R.id.ivGallery)
    void addMedia() {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        intent.setType("*/*");
        intent.setType("image/jpeg");
        intent.setType("video/mp4");
        startActivityForResult(intent, GALLERY_REQUEST_CODE);
    }

4 个答案:

答案 0 :(得分:1)

您需要为图像和视频组合使用 setType()。 喜欢:

intent.setType("image/* video/*");

setType()适用于您必须从图库中选择的两种类型媒体。

答案 1 :(得分:1)

您可以使用此选择所有类型的文件。

 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
 intent.addCategory(Intent.CATEGORY_OPENABLE);
 intent.setType("*/*");
 startActivityForResult(intent, PICKFILE_REQUEST_CODE);

答案 2 :(得分:0)

我不确定为什么它不适合你,但是如果照片没有保存在设备上,我从谷歌照片中获取照片时遇到了类似的问题。 我所做的基本上是检查路径是否为空(意味着图像不在设备上),如果是这样,我只需创建一个新文件并从流中读取缓冲区并将其保存到新文件中..为我工作< / p>

    public static String getImagePathForImageDownloadedFromGooglePhotos(Context context, Uri uri)
{
    ParcelFileDescriptor parcelFileDescriptor = null;
    try {
        parcelFileDescriptor = context.getContentResolver()
                .openFileDescriptor(uri, "r");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    if (parcelFileDescriptor == null)
        return null;

    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
    InputStream inputStream = new FileInputStream(fileDescriptor);
    try {
        //noinspection SpellCheckingInspection
        File file = new File(context.getCacheDir(), new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()));
        String path = file.getAbsolutePath();
        try {
            try (OutputStream output = new FileOutputStream(file)) {
                byte[] buffer = new byte[4 * 1024];
                int read;

                while ((read = inputStream.read(buffer)) != -1) {
                    output.write(buffer, 0, read);
                }

                output.flush();
                return path;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } finally {
        try {
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}

}

答案 3 :(得分:0)

试试这个。

make = [Manufacturer A] and [Manufacturer C]
model = [Type A] and [Type B]