是否可以与Intent.ACTION_SEND共享文件检索并存储用户选择

时间:2016-06-01 03:16:58

标签: android android-intent android-sharing

我想允许用户与Intent.ACTION_SEND共享一个文件然后存储用户选择和地址/电话号码,以便能够在不同的时间自动将不同的文件发送到同一目的地。这可能吗?怎么样? 感谢

1 个答案:

答案 0 :(得分:2)

您可以将文件作为二进制数据共享,如下所述。

来自Android Developer Page的参考链接: https://developer.android.com/training/sharing/send.html

  

发送二进制内容

     

使用结合的ACTION_SEND操作共享二进制数据   设置适当的MIME类型并将URI放入数据中   一个名为EXTRA_STREAM的额外名称。这通常用于共享图像   但可用于共享任何类型的二进制内容:

startActivity(shareIntent);
  

请注意以下事项:

     

您可以使用MIME类型" / ",但这只会匹配活动   能够处理通用数据流。接收   应用程序需要权限才能访问Uri指向的数据。该   建议的方法是:将数据存储在您自己的数据库中   ContentProvider,确保其他应用程序正确无误   允许访问您的提供商。首选的机制   提供访问权限是使用临时和每个URI权限   仅授予对接收应用程序的访问权限。一种简单的创作方式   像这样的ContentProvider是使用FileProvider助手类。   使用系统MediaStore。 MediaStore主要针对视频,   音频和图像MIME类型,但从Android 3.0开始(API   等级11)它还可以存储非媒体类型(参见MediaStore.Files for   更多信息)。可以使用scanFile()将文件插入MediaStore   之后传递一个适合共享的内容:// style Uri   提供的onScanCompleted()回调。注意,一旦添加到   系统MediaStore可以访问设备上任何应用程序的内容

只需更改上面代码中的最后一行,这样每次都不会显示选择器。它将在您的应用程序的后续运行中存储默认选项。

killall ruby

关于" 然后存储用户选择和地址/电话号码,以便能够自动将不同的文件发送到同一目的地"

用户选择将文件发送到特定应用程序将使用上述代码进行存储。但我不这么认为,您可以在应用程序中存储来自其他应用程序的特定号码/地址,以便随后发送文件。一旦您的意图转到另一个活动(应用程序),它就无法通过您之前的活动(应用程序)进行控制。每次,您都必须在第二个应用程序中选择该特定地址/数字。