如何在Android Q中从Uri获取图像的实际路径?

2024-01-14

我正在使用相机拍照并从图库中进行选择。之后进行压缩以减小文件大小。我正在使用getRealPathFromURI()获取实际图像路径的方法,但在 Android Q 中MediaStore.Images.Media.DATA已弃用。

fun getRealPathFromURI(contentUri: Uri, activityContext: Activity): String {
    val proj = arrayOf(MediaStore.Images.Media.DATA)
    val cursor = activityContext.managedQuery(contentUri, proj, null, null, null)
    val column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
    cursor.moveToFirst()
    return cursor.getString(column_index)
}

根据我尝试过的文档openFileDescriptor()获得访问权限:

private fun getBitmapFromUri(context: Context, uri: Uri): Bitmap {
    val parcelFileDescriptor = context.contentResolver.openFileDescriptor(uri, "rw")
    val fileDescriptor = parcelFileDescriptor?.fileDescriptor
    val image = BitmapFactory.decodeFileDescriptor(fileDescriptor)
    parcelFileDescriptor?.close()
    return image
}

也尝试过this https://stackoverflow.com/a/52095352


由于分区存储的原因,我们无法将图像直接写入所需的文件夹,然后更新MediaStore。相反,Android Q 引入了一个新领域MediaStore.Images.Media.RELATIVE_PATH我们可以在其中指定图像的路径(例如,"Pictures/Screenshots/").

请参阅“将照片保存到图库”部分this https://proandroiddev.com/working-with-scoped-storage-8a7e7cafea3博客以获取更多信息。

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

如何在Android Q中从Uri获取图像的实际路径? 的相关文章

随机推荐

  • Phalcon PHP - 表单和模型验证

    Phalcon 支持 2 个验证组件 Phalcon Validation Validator Phalcon Mvc Model Validator 我不知道如何在我的情况下使用它们 我有一张注册表 其中包含 csrf username
  • Google Admin SDK - 服务帐户无法访问资源

    我已通过 console developers google com 创建了服务帐户客户端 生成的密钥 p12 证书 启用 DwD 等等 然后我继续在管理员中担任描述者API参考 https developers google com id
  • OpenLayers 3 图像和文本样式 zindex

    我注意到文本和图像样式在渲染时似乎不遵守其图层顺序 例如 当具有这些样式的许多要素靠近时 所有文本都会呈现在其他重叠矢量要素之上 有没有办法禁用或覆盖这种行为 谢谢 myFeature setStyle new ol style Style
  • LINQ - 按名称分组到 Dictionary>

    我正在构建一个图书馆应用程序 我有一个书籍列表 其中一些书籍的名称重复 同一本书的副本很少 我想将列表转换为 Dictionary gt 其中字符串是一本书的名称 列表将包含具有该名称的所有 Book 对象 我已经做到了这一点 var re
  • 在安装过程中使用 Inno Setup 删除未随 Inno Setup 安装的其他应用程序

    我有一个旧的 VB6 应用程序 它是使用非常旧的 16 位版本的 InstallShield 部署的 我已经使用 Inno Setup 创建了一个新的安装程序 以便通过更新对我的 VB6 应用程序进行 64 位友好 我的所有用户都已安装现有
  • 滚动时透明导航栏可见

    我看到一个透明的主题导航栏 向下滚动时效果非常好 这是向下滚动时发生的情况 不透明度从 0 变为 100 导航栏固定容器高度变小 颜色 fff 变成颜色 000 这是该主题演示页面的直接链接 http www awerest com dem
  • SAX 解析器可以在 Java 中使用 XPath 吗?

    我正在尝试迁移我的一个使用的类DOM解析有很多XPath表达式到SAX解析 DOM解析对我来说很好 但我尝试解析的一些文件太大 导致服务器超时 我想重复使用XPath与SAX解析但我不确定是否可能 如果不可能请你帮助我 因为我不知道当我仅使
  • Python 有没有模拟键盘操作的库?

    我遇到的问题是我有这个 Python 脚本来启动应用程序 应用程序启动后 GUI 显示在屏幕上 我想将其停用 可以通过激活另一个窗口 最小化此应用程序或按 WindowsXP 的 显示桌面 键来手动完成此操作 那么有什么办法可以用Pytho
  • AngularJS:当解析 $http 返回响应 obj 而不是我的 obj 时,$routeProvider

    我正在尝试解决几个 ajax 调用 以便我的控制器需要的数据在它 及其提供的指令 执行之前可用 执行顺序有效 但是 注入到控制器中的结果不是返回我创建的对象 而是 http 的响应对象 config data headers status
  • VSCode 更改默认 python 版本

    当我在 VSCode 上编码并且不指定 python 版本时 它设置为 python2 7 17 我想将其默认设置为python3 6 我尝试通过在脚本顶部添加以下内容来实现此目的 usr bin python3 6但它不起作用 usr b
  • Npm 错误 - Windows NT - 如何解决

    当我尝试 npm install 时出现以下错误 npm ERR Windows NT 6 1 7601 npm ERR argv C Program Files nodejs node exe C Program Files nodejs
  • 如何获取Infinispan缓存中数据的大小,替代ehcache的calculateInMemorySize?

    我正在从 ehcache 迁移到 infinispan 在ehcache中我们有 net sf ehcache Cache calculateInMemorySize 来计算内存大小 如何计算 infinispan 中的内存大小 托马斯是对
  • Android Studio 是否有层次结构查看器或布局检查器?

    我尝试在这里搜索但找不到答案 我正在寻找一种方法来启动层次结构查看器 http developer android com tools help hierarchy viewer html从 Android Studio 中启动 而不必在命
  • openGL:带有着色器的线条

    如何使用着色器创建一条线 可能是彩色的 我正在使用可编程管道 并且我是 openGL 的初学者 我找不到有关如何使用着色器绘制线条的示例 我想我必须将 VAO 顶点数组对象 加载到着色器中 但是然后呢 我应该使用哪些功能以及如何使用 首先
  • 从 Shell 脚本 /bin/sh 运行 FFMPEG

    我正在尝试设置一个 Shell 脚本以在自动化监视文件夹中工作 除了运行 Shell 脚本部分之外 一切正常 本质上 当文件出现在监视文件夹中时 它会运行调用 FFMPEG 的 shell 脚本 然后将文件移动到存档文件夹以安全保存 然而现
  • 基于 Cognito ID 的 S3 文件夹访问 IAM 策略

    我创建了一个 IAM 策略来允许 Cognito 用户写入我的 S3 存储桶 但我想根据他们的 Cognito ID 将它们限制为文件夹 我已按照亚马逊的说明进行操作here http docs aws amazon com IAM lat
  • 在我的 DbHelper 类的 oCreate 中插入记录时,递归调用 getDatabase

    当我尝试在从 SQLiteOpenHelper 扩展的 DbHelper 类的 onCreate 方法中插入记录时 将会出现此错误 我发现了一些类似的主题 Android getDatabase 递归调用 https stackoverfl
  • python 函数默认参数只计算一次? [复制]

    这个问题在这里已经有答案了 我是一个Python初学者 正在阅读 Python教程 它说如果我们有一个函数 def f a L L append a return L print f 1 print f 2 print f 3 这将打印 1
  • JavaScript 验证足以保证我的表单安全吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在建立一个网站 我对登录 注册页面上的表格有疑问 我在登录页面上有一些标准的 javascript 验证 我的问题是 如果禁用了 javas
  • 如何在Android Q中从Uri获取图像的实际路径?

    我正在使用相机拍照并从图库中进行选择 之后进行压缩以减小文件大小 我正在使用getRealPathFromURI 获取实际图像路径的方法 但在 Android Q 中MediaStore Images Media DATA已弃用 fun g