任何人都可以建议我们如何在n个Android应用程序之间共享文件?建议我任何链接,代码等?在此先感谢!!
答案 0 :(得分: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>
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。
答案 1 :(得分:0)
所有应用程序都必须知道文件名。将文件保存到SD卡或内部存储器,并确保它是公开的。在这个主题上查看Android开发者网站:http://developer.android.com/training/basics/data-storage/files.html
我希望这会有所帮助。