Google Drive Android Intent 中的文件视图

2024-02-28

如果有人能提供帮助,我会非常棒。我正在构建一个应用程序,我试图访问我的文件并将它们显示在图像视图中。

我有一个按钮,并附加了一个 onClickListener

iButton.setOnClickListener(new View.OnClickListener() {   
@Override
public void onClick(View view) {
   Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
   photoPickerIntent.setType("image/*");
   startActivityForResult(Intent.createChooser(photoPickerIntent, "Select Picture"), 1);
   }
 });

意图给了我 3 个选项 Gallery、Dropbox 和 Google Drive

对于图库,我可以访问该文件并将其显示在图像视图中

Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null,   null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
imageHolder.setImageBitmap(BitmapFactory.decodeFile(picturePath));

对于 Dropbox 我这样做

imageHolder.setImageBitmap(BitmapFactory.decodeFile(selectedImage.getPath()));

但是我不确定如何为谷歌驱动器执行此操作,我尝试像画廊一样执行此操作,但出现以下错误

E/BitmapFactory:无法解码流:java.io.FileNotFoundException:/:打开失败:EISDIR(是目录)

任何帮助将不胜感激。


正确答案最初在这里给出:Google 云端硬盘 GET_CONTENT 意向读取文件 https://stackoverflow.com/questions/17897179/google-drive-get-content-intent-read-file

解决方案是从 contentResolver 获取它InputStream

我从任何地方获取图像的完整代码:

Uri selectedImage = imageReturnedIntent.getData();
if (selectedImage == null) {
    return;
}
String[] filePathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    mCurrentPhotoPath = cursor.getString(columnIndex);
    cursor.close();
}

if (TextUtils.isEmpty(mCurrentPhotoPath)) {
    mCurrentPhotoPath = selectedImage.getPath();
}
Bitmap bitmap = null;
if (imageReturnedIntent.getDataString() != null && imageReturnedIntent.getDataString().contains("docs.file")) {
    try {
        InputStream inputStream = getContentResolver().openInputStream(selectedImage);
        bitmap = BitmapFactory.decodeStream(inputStream);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

if (bitmap == null) {
    bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Drive Android Intent 中的文件视图 的相关文章

随机推荐

  • 什么是 gitlab runner

    我想我从根本上错过了一些东西 我是 CI CD 新手 正在尝试使用 gitlab 建立我的第一个管道 该项目是一个预先存在的 PHP 项目 我还不想清理它 目前我已经将整个东西推入了 docker 容器 并且它与谷歌云的 mysql 数据库
  • 模拟跨上下文连接--LINQ/C#

    问题是这样的 我有 2 个数据上下文 我想对其进行联接 现在我知道 LINQ 不允许从一个上下文连接到另一个上下文 并且我知道有 2 种可能的解决方案是创建单个数据上下文或有 2 个单独的查询 这就是我现在正在做的事情 然而我想做的是 模拟
  • 如何管理 git 中的重叠存储库,包括同一目录中的文件?

    我有一个复杂的存储库 有时代码段之间的逻辑边界跨越目录边界 有时目录 X 中的单个文件确实需要与目录 Y 中的文件一起使用 例如 假设我有一个如下所示的中央存储库 a foo a bar b baz1 b baz2 我希望我的本地存储库最终
  • 如何通过 Curl 和 PHP 发送 SOAP XML?

    这已经困扰我好几天了 我正在尝试通过 Curl 发送 SOAP 帖子 但我总是收到 无法连接到主机 错误 但是 我真的不知道如何解决 我有一个 ASP 版本 它可以在相同的 URL 和数据下正常工作 我认为这只是 PHP Curl 的事情
  • AWS Lambda Python 3.7 运行时异常日志记录

    使用 Python 3 7 运行时时引发的未处理异常似乎不会像在 Python 3 6 中那样记录到 CloudWatch 如何在 Python 3 7 中设置记录器来捕获此信息 还发布在 AWS 论坛上 https forums aws
  • pytorch index_put_给出运行时错误:“索引”的导数未实现

    这是后续问题这个问题 https stackoverflow com q 65584330 3337089 我尝试使用index put 如建议的答案 https stackoverflow com a 65584479 3337089 但
  • 当有很多要发送的值时,将值传递给函数的最佳方法是什么?

    当您必须将许多值传递给函数并且其中一些值可能是可选的时 定义方法签名的最佳方法是什么 将来 我可能必须传递更多变量或减去一些传递给函数的值 例如 电话和地址可选 function addInfo name dob phone address
  • 针对 R+(版本 30 及更高版本)要求已安装 APK 的 resources.arsc 未压缩存储并在 4 字节边界上对齐

    我正在尝试将 android 目标 API 从 29 更新到 30 我已更新 compileSdkVersion 30 targetSdkVersion 30 buildToolsVersion 30 0 2 该应用程序与zipalign
  • cocoa 应用程序中提示 root 访问权限

    我希望我的程序以要求 root 访问权限的提示 警报开始 用户必须输入密码 然后应用程序就会启动 我一直在环顾四周 但我不太确定该怎么做 非常感谢您的帮助 Thanks 这是苹果公司关于此事的文档 http developer apple
  • 如何消除TPaintBox右边缘的闪烁(例如调整大小时)

    总结 假设我有一个 TForm 和两个面板 面板对齐 alTop 和 alClient alClient面板包含一个TPaintBox 其OnPaint涉及绘图代码 组件上 DoubleBuffered 的默认值为 false 在绘制过程中
  • 为什么 Icon Composer 2.4 不再支持 1024x1024 尺寸的图标?

    Xcode 4 3 3中的图标编辑器2 2支持1024x1024的icns 然而 对于 Icon Composer 2 4 它不再支持这一点 这很讽刺 因为苹果推动了视网膜显示屏mbp 并要求新提交的应用程序使用1024x1024图标 但图
  • Android 手风琴/手风琴/折叠动画

    我正在尝试创建一个交互式手风琴 手风琴 折叠动画 以便视图在交互时自行折叠 展开 以同样的方式折叠视图 但两侧都折叠 我认为我可以做到的方法是重写 onDraw 方法 以某种方式复制画布或画布上的信息 然后绘制以一种方式旋转的画布的前半部分
  • 不支持表/列名称中的方括号?

    postgresql 是否不支持表名 列名或数据类型中的方括号 在 pgadmin 中运行查询时出现以下错误 CREATE TABLE Test ERROR syntax error at or near SQL状态 42601 在 Pos
  • 模板继承的 UML 图

    在我的库的文件中 我有一个继承自模板的类 我的代码示例 class data class dataA public data class dataB public data inheritance from a template templ
  • 获取 div 中锚点的 href 并将其应用到图像?

    我有一个 div 其中有图像和链接 是否有可能在页面加载时 我可以以某种方式找到链接的 href 并应用图像的锚标记 我知道这似乎是一个奇怪的请求 我只是问是否可以做到 如果可以 怎么做 http jsfiddle net fFgwb ht
  • R 中 beanplot 上的多种颜色

    我使用以下命令在 R 中创建了豆图 beanplot windA side both border NA col list gray c red white ylab Wind Speed m s what c 1 1 1 0 xaxt n
  • 无法在 Nginx 服务器中使用 LetsEncrypt 设置 HTTPS

    我按照以下教程在 DigitalOcean 上为我的网站设置 https https www digitalocean com community tutorials how to deploy a laravel application
  • QuickSort对递归深度的估计

    递归深度是 QuickSort 达到其基本情况之前连续递归调用的最大数量 并注意它 递归深度 是一个随机变量 因为它取决于所选的主元 我想要的是估计快速排序的最小可能和最大可能递归深度 以下过程描述了 QuickSort 通常实现的方式 Q
  • 我如何从文件中反序列化记录结构,已经使用 print-dup 保存到文件中?

    我有以下代码 use clojure java io defrecord Member id name salary role defrecord Role id name def member records ref defn add m
  • Google Drive Android Intent 中的文件视图

    如果有人能提供帮助 我会非常棒 我正在构建一个应用程序 我试图访问我的文件并将它们显示在图像视图中 我有一个按钮 并附加了一个 onClickListener iButton setOnClickListener new View OnCl