0

谁能建议我们如何在 n 个 android 应用程序之间共享文件?建议我任何链接,代码等?提前致谢 !!

4

2 回答 2

6

查看 android.support.v4.content.FileProvider。该组件可以通过内容 URI将文件从一个应用程序共享到系统中的任何其他应用程序,这允许托管应用程序使用 URI(不仅仅是文件)权限来控制文件。这意味着托管应用程序可以设置临时访问权限,而不是永久更改文件的权限。没有性能损失,因此每次应用程序需要文件时,它都可以获得内容 URI 和临时权限。非常安全。

FileProvider 是 ContentProvider 的子类,工作方式大致相同。

当前的参考文档有点含糊。我将尝试总结:

托管应用程序需要在清单中声明提供程序:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities=authority
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data>
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/some_name" />
</provider>
  • “authority”是你组成的 URI 权限。
  • some_name 是您放入项目中的 XML 文件的名称(通常在xml/子目录中。

的内容some_name.xml

<paths>
    <files-path name="path-segment" path="filepath"/>
    ...
</paths

文件路径

共享您的私有文件区域中的文件(由 Context.getFilesDir() 返回的值),但您也可以共享您的外部区域和缓存区域中的文件。

filepath

是您私人文件区域中的子目录,例如images/. path-segment是进入内容 URI 的相应路径。例如,如果您使用

com.example.myapp.fileprovider

并放入

<files-path name="images" path="images/">

然后生成的内容 URI 以

content://com.example.myapp.fileprovider/images

如果要共享文件 images/myimage.jpg,则生成的内容 URI 为

content://com.example.myapp.fileprovider/images/myimage.jpg

托管应用程序通过调用 `FileProvider.getUriForFile() 生成内容 URI

好在你不必在代码中实现 FileProvider 的子类;它的默认行为足以满足大多数人的需求。

有关更多信息,请参阅 javadoc。

于 2013-08-23T21:59:21.613 回答
0

所有应用程序都必须知道文件名。将文件保存到 SD 卡或内部存储器并确保它是公开的。查看有关此主题的 Android 开发人员站点:http: //developer.android.com/training/basics/data-storage/files.html

我希望这有帮助。

于 2013-08-23T19:07:49.753 回答