android - 从谷歌驱动器 URI 获取文件名

标签 android google-drive-api android-imageview android-bitmap google-drive-android-api

在我的应用中,用户可以从相机和图库中选择图像以加载到 ImageView。

我正在使用以下代码打开相关应用程序以选择图像:

 Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

问题出在 Google 驱动器上。如果用户从 Google Drive 中选择图像,我会得到这样的 URI:content://com.google.android.apps.docs.storage.legacy/enc%3DHxtpLaMr66OMOzDOKTRZ-5ed7q7Szj7F7nC0IlxBnV8hx2P1%0A

我可以生成位图但无法获取文件名。

 InputStream input = context.getContentResolver().openInputStream(uri);
               Bitmap bitmap = BitmapFactory
                        .decodeStream(input);

我需要显示用户选择的文件名。

请帮我从谷歌驱动器 URI 中提取图像名称。

最佳答案

I am able to generate Bitmap but unable to get file name

不必成为文件名。并非每个字节序列都有一个文件名。例如,此答案没有文件名。

Please help me to extract image name from google drive uri.

这在严格意义上是不可能的。

您可以切换到 ACTION_OPEN_DOCUMENT。然后,将生成的 Uri 包装在 a DocumentFile using fromSingleUri() 中.然后,在 DocumentFile 上调用 getName()。这将是一个“显示名称”,用户应该能够识别。 它仍然可能不是文件名

我不能排除 Google Drive API 有一些方法可以从 Uri 中获取显示名称,而您从 ACTION_GET_CONTENT 获得的显示名称可能会让我感到惊讶.您的 ACTION_GET_CONTENT 中的 Uri 也可能与 DocumentFile 一起使用 - 如果您将 CATEGORY_OPENABLE 添加到您的 >Intent,它会增加这个工作的几率。

关于android - 从谷歌驱动器 URI 获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735310/

相关文章:

java - 在java的另一个类上动态执行android Activity 函数

google-drive-api - 如何获取文件所有者的电子邮件地址 Google Drive API

google-drive-api - 加载 Aurelia 会破坏 Google API

android - 找到屏幕尺寸后更改 FrameLayout 的尺寸

android - 如何更改切换 View 状态外观 : android

android - 如何在中心添加图标提示Edittext

android - 在动态 ListView 中添加图像

android imageView 不喜欢我的 .png 文件

Android:在 TextInputLayout 中的 EditText 的右侧显示 TextView

java - Google Drive API v2 q=sharedWithMe 从 "My Drive"文件夹返回文件