我一直在尝试找到在Android中的应用之间共享文件的不同方法。我找到了file sharing和camera教程,其中文件分别从所有者应用的私人目录和SD卡共享。
我观察(从第一个链接)实现它的方法是使用Intent.setFlags
和FLAG_GRANT_READ_URI_PERMISSION
,但在教程中,Intent.setFlags
API正在接收器中使用应用程序。更具体地说,
App 1向App 2发送请求 - >
应用2使用setResult
return Intent
与URI permissions
在第二个链接中,
App 1在SD卡存储中创建一个文件并将其传递给相机进行写入。
如果我们看下面的图片..
这是用户如何使用Android的典型示例,例如:电子邮件中的附件需要签名,并由用户在应用程序之间传递。
我想问的是,URI permissions with an Intent
在使用sending a Intent
的第二个应用instead
时是否可以使用in the app receiving the Intent
?
更具体地说,使用can URI permissions be used
或startActivity
等API时会startService
?
我问这个是因为,例如,当向第二个应用程序发送意图时(考虑隐式意图),意图字段(数据,动作,类别)将被设置为匹配应该的应用程序的意图过滤器收到意图。对于共享文件,数据URI需要与需要共享的文件相对应。
如果我的问题不明确,请发表评论&我会澄清。
修改:
我还想询问使用SD卡是否是发送Intent时共享文件的唯一方法?
答案 0 :(得分:2)
我想问的是,在将Intent发送到第二个应用程序时,是否可以对Intent使用URI权限,而不是在接收Intent的应用程序中使用?
是
更具体地说,在使用startActivity或startService等API时可以使用URI权限吗?
是的,虽然我只用startActivity()
尝试过。 Here is a sample project演示使用FileProvider
并授予第三方权限以查看由FileProvider
投放的PDF文件。
我还想询问使用SD卡是否是发送Intent时共享文件的唯一方法?
这不仅是唯一的方式,也不是推荐的方式。如果您的应用包含要与其他人共享的文件,请使用FileProvider
或您自己的ContentProvider
实施。