Android - 在应用程序之间共享文件

时间:2014-07-25 22:21:11

标签: android android-intent

我一直在尝试找到在Android中的应用之间共享文件的不同方法。我找到了file sharingcamera教程,其中文件分别从所有者应用的私人目录和SD卡共享。

我观察(从第一个链接)实现它的方法是使用Intent.setFlagsFLAG_GRANT_READ_URI_PERMISSION,但在教程中,Intent.setFlags API正在接收器中使用应用程序。更具体地说,

App 1向App 2发送请求 - >

应用2使用setResult return IntentURI permissions

在第二个链接中,

App 1在SD卡存储中创建一个文件并将其传递给相机进行写入。

如果我们看下面的图片..

enter image description here

这是用户如何使用Android的典型示例,例如:电子邮件中的附件需要签名,并由用户在应用程序之间传递。

我想问的是,URI permissions with an Intent在使用sending a Intent的第二个应用instead时是否可以使用in the app receiving the Intent

更具体地说,使用can URI permissions be usedstartActivity等API时会startService

我问这个是因为,例如,当向第二个应用程序发送意图时(考虑隐式意图),意图字段(数据,动作,类别)将被设置为匹配应该的应用程序的意图过滤器收到意图。对于共享文件,数据URI需要与需要共享的文件相对应。

如果我的问题不明确,请发表评论&我会澄清。

修改:

我还想询问使用SD卡是否是发送Intent时共享文件的唯一方法?

1 个答案:

答案 0 :(得分:2)

  

我想问的是,在将Intent发送到第二个应用程序时,是否可以对Intent使用URI权限,而不是在接收Intent的应用程序中使用?

  

更具体地说,在使用startActivity或startService等API时可以使用URI权限吗?

是的,虽然我只用startActivity()尝试过。 Here is a sample project演示使用FileProvider并授予第三方权限以查看由FileProvider投放的PDF文件。

  

我还想询问使用SD卡是否是发送Intent时共享文件的唯一方法?

这不仅是唯一的方式,也不是推荐的方式。如果您的应用包含要与其他人共享的文件,请使用FileProvider或您自己的ContentProvider实施。