我在使用“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);
}
答案 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]