在Android上的应用程序之间共享文件.除了ContentProvider,还有什么好的替代方案吗



我正在寻找一种在以下场景中运行的应用程序之间共享文件的方法:

  • 在我们的应用程序中,有一个文件列表。用户单击"共享"按钮,我们会向他显示选择对话框,其中显示可以获取该文件的应用程序列表。例如,用户可以选择Gmail,创建信件并将其附加到选定的信件文件中,或者用户可以通过蓝牙传输文件
  • 该文件可以在我们应用程序的私人目录中
  • 文件可以位于文件系统中的任何位置,但需要root访问权限的目录除外
  • 接收文件的应用程序可能没有READ_EXTERNAL_STORAGE权限
  • 它应该从API 14级开始工作,直到最新版本

据我所知,满足所有条件的唯一方法是在我的应用程序中实现自定义ContentProviderFileProviderContentProvider将给出文件的内容URI,我们将该URI与FLAG_GRANT_READ_URI_PERMISSION一起附加到ACTION_SHAREIntent。

我担心我错过了其他一些简单而干净的解决方案。是否存在ContentProvider的其他可靠替代方案,如果存在,它是什么?

因此,我在FileProvider中发现了一个未记录的功能,它允许您从设备上的任何位置共享文件。它是root-path元素:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<root-path name="my_root"/>
</paths>

使用root-path时,FileProvider完全符合我的所有要求。实现只需要十几行代码,FileProvider是一个很好的组件。

相关内容

最新更新