FileProvider:- Setting up file sharing
我知道在android nougat中更改文件策略。文件共享到其他应用程序的通缉应用程序通过FileProvider生成uri。 uri格式是content://com.example.myapp.fileprovider/myimages/default_image.jpg
。
我想知道如何从FileProvider.getUriForFile()
生成的uri获取filepath。因为我的app需要知道物理文件路径才能保存,加载,读取信息等,这是可能的
[简而言之]
content://com.example.myapp.fileprovider/myimages/default_image.jpg
FileProvider.getUriForFile
生成的。你无法获得Uri的“文件路径”,原因很简单,就是不要求Uri指向文件。使用getContentResolver().openFileDescriptor()
和openInputStream()等方法来访问Uri表示的内容。
要使用内容URI与其他应用共享文件,您的应用必须生成内容URI。要生成内容URI,请为该文件创建一个新文件,然后将该文件传递给getUriForFile()。您可以将getUriForFile()返回的内容URI发送到Intent中的另一个应用程序。接收内容URI的客户端应用程序可以通过调用ContentResolver.openFileDescriptor来打开文件并访问其内容以获取ParcelFileDescriptor。资料来源:ContentResolver
我在我们的应用程序中有类似的要求,并且早先感到困惑。我这样解决了。
在Android N中,仅更改了暴露给第三方应用程序的文件uri。 (不是我们之前使用它的方式)。
在我们的应用程序中,我们将uri发送到相机应用程序,在该位置我们期望相机应用程序存储捕获的图像。
现在我们有2个不同的uri用于同一个文件。 #1与相机应用共享。如果摄像头意图成功,我们可以从#2访问图像。
希望这可以帮助。