【发布时间】:2018-05-25 08:37:33
【问题描述】:
我正在开发一个 Android 应用程序,它在谷歌驱动器中调用 getPickChooserIntent 来获取一些文件,它适用于图像但不适用于文档:
注意:我不是在谈论 google drive API 实现。
public static Intent getPickChooserIntent(
@NonNull Context context,
CharSequence title,
boolean includeDocuments,
boolean includeCamera) {
List<Intent> allIntents = new ArrayList<>();
PackageManager packageManager = context.getPackageManager();
// collect all camera intents if Camera permission is available
if (!isExplicitCameraPermissionRequired(context) && includeCamera) {
allIntents.addAll(getCameraIntents(context, packageManager));
}
List<Intent> galleryIntents =
getGalleryIntents(packageManager, Intent.ACTION_GET_CONTENT, includeDocuments);
if (galleryIntents.size() == 0) {
// if no intents found for get-content try pick intent action (Huawei P9).
galleryIntents = getGalleryIntents(packageManager, Intent.ACTION_PICK, includeDocuments);
}
allIntents.addAll(galleryIntents);
Intent target;
if (allIntents.isEmpty()) {
target = new Intent();
} else {
target = allIntents.get(allIntents.size() - 1);
allIntents.remove(allIntents.size() - 1);
}
// Create a chooser from the main intent
Intent chooserIntent = Intent.createChooser(target, title);
// Add all other intents
chooserIntent.putExtra(
Intent.EXTRA_INITIAL_INTENTS, allIntents.toArray(new Parcelable[allIntents.size()]));
return chooserIntent;
}
从getPickImageChooserIntent(Context)中获取选中图片的URI 将返回正确的 URI。
public static Uri getPickImageResultUri(@NonNull Context context, @Nullable Intent data) {
boolean isCamera = true;
if (data != null && data.getData() != null) {
String action = data.getAction();
isCamera = action != null && action.equals(MediaStore.ACTION_IMAGE_CAPTURE);
}
return isCamera || data.getData() == null ? getCaptureImageOutputUri(context) : data.getData();
}
之后我只找到类似的 URI:content://com.google.android.apps.docs.storage.legacy/enc%3D8HXM7NIDpCn_Ax78iaO3nB9azNXlIu4AOk2poROCD8xP19KU%0A
这个 URI 在 ImageView 中适用于图像和显示图像,如果那时我选择 PDF 或其他文档,则它不起作用。
任何人有任何想法从谷歌驱动器获取意图数据而无需谷歌驱动器 API 集成?
谢谢
【问题讨论】:
-
你在用不起作用的 uri 做什么?
-
我只想在我们的应用中下载该文件。
-
然后显示该代码。
-
在 ImageView 中:imageView.setImageURI(mUri); pdfView: pdfView.fromUri(mUri);
-
mCropImageUri ?
标签: android android-intent document google-drive-android-api