Android 7 nougat,如何从传入意图的uri获取文件路径?

hoh*_*ins 5 android filepath android-intent android-fileprovider android-7.0-nougat

FileProvider: - 设置文件共享

我知道在android nougat中更改文件策略.文件共享到其他应用程序的通缉应用程序通过FileProvider生成uri.uri格式是content://com.example.myapp.fileprovider/myimages/default_image.jpg.

我想知道如何从生成的uri获取filepath FileProvider.getUriForFile().因为我的app需要知道物理文件路径才能保存,加载,读取信息等,这是可能的

[简而言之]

  1. 我的应用程序在andorid 7 nougat上收到了其他应用程序的意图uri.
  2. uri格式是 content://com.example.myapp.fileprovider/myimages/default_image.jpg
  3. 也许是由它产生的FileProvider.getUriForFile.
  4. 我想知道从uri获取文件路径的方法.
  5. 我可以从中获取mime类型,显示名称,文件大小和读取binay getContentResolver().openFileDescriptor().但我想知道文件路径.

Joh*_*ohn 4

您无法获取 Uri 的“文件路径”,原因很简单,即不要求 Uri 指向文件。使用ContentResolver和 openInputStream() 等方法来访问 Uri 表示的内容。

要使用内容 URI 与其他应用程序共享文件,您的应用程序必须生成内容 URI。要生成内容 URI,请为该文件创建一个新文件,然后将该文件传递给 getUriForFile()。您可以将 getUriForFile() 返回的内容 URI 在 Intent 中发送到另一个应用程序。接收内容 URI 的客户端应用程序可以通过调用 ContentResolver.openFileDescriptor 获取 ParcelFileDescriptor 来打开文件并访问其内容。来源:Android 开发者