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

问题描述 投票:5回答:3

FileProvider:- Setting up file sharing

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

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

[简而言之]

  1. 我的应用程序收到了android 7牛轧糖上其他应用程序的意图uri。
  2. uri格式是content://com.example.myapp.fileprovider/myimages/default_image.jpg
  3. 也许它是由FileProvider.getUriForFile生成的。
  4. 我想知道从uri获取文件路径的方法。
  5. 我可以从qazxsw poi获取mime类型,显示名称,文件大小和读取二进制文件。但我想知道文件路径。
android android-intent filepath android-7.0-nougat android-fileprovider
3个回答
4
投票

你无法获得Uri的“文件路径”,原因很简单,就是不要求Uri指向文件。使用getContentResolver().openFileDescriptor()和openInputStream()等方法来访问Uri表示的内容。

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


0
投票

我在我们的应用程序中有类似的要求,并且早先感到困惑。我这样解决了。

在Android N中,仅更改了暴露给第三方应用程序的文件uri。 (不是我们之前使用它的方式)。

在我们的应用程序中,我们将uri发送到相机应用程序,在该位置我们期望相机应用程序存储捕获的图像。

  1. 对于android N,我们生成新的Content://基于uri的url指向文件。
  2. 我们生成相同的基于File api的路径(使用旧方法)。

现在我们有2个不同的uri用于同一个文件。 #1与相机应用共享。如果摄像头意图成功,我们可以从#2访问图像。

希望这可以帮助。


© www.soinside.com 2019 - 2024. All rights reserved.