如何创建意图/选择器来共享外部文件?

时间:2016-02-26 23:24:14

标签: android android-intent

我不太确定该问什么或在哪里找到这个,所以请原谅,如果这听起来特别愚蠢。我了解如何使用自定义提供商从我的应用分享数据。

我要做的是创建一个选择器来共享当前播放的音乐文件。我从DATA的{​​{1}}列中获取文件名,然后在我的活动中,我有以下代码:

MediaStore

这正确显示了要与之共享的应用程序列表,并选择一个填充文件的名称。但是,数据不包括在内。例如,如果我与Gmail共享,则附件按名称​​显示,但没有大小,然后发送电子邮件会丢失附件。

注意:是的,共享外部文件是违反当前建议的。请尊重我知道自己要做的事情。

2 个答案:

答案 0 :(得分:0)

不要使用/(?:background(?:-image)?|list-style)[\s]*:[^\r\n;]*url\((?!['"]?(?:data|http):)['"]?([^'"\)]*)/g URI进行共享。它要求接收应用程序具有file://权限。

而是将FileProviderREAD_EXTERNAL_STORAGE一起使用,以允许接收应用通过内容提供商访问该文件,而无需特殊权限。

要了解详情,请查看Ian Lake的视频Sharing Content (Android Development Patterns S2 Ep 6)以及相关联的Sharing Content between Android apps

答案 1 :(得分:-2)

使用Uri.fromFile(new File(song.filename))让一个好的Uri投入到意图中。