我想允许用户与Intent.ACTION_SEND
共享一个文件然后存储用户选择和地址/电话号码,以便能够在不同的时间自动将不同的文件发送到同一目的地。这可能吗?怎么样?
感谢
答案 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
关于" 然后存储用户选择和地址/电话号码,以便能够自动将不同的文件发送到同一目的地"
用户选择将文件发送到特定应用程序将使用上述代码进行存储。但我不这么认为,您可以在应用程序中存储来自其他应用程序的特定号码/地址,以便随后发送文件。一旦您的意图转到另一个活动(应用程序),它就无法通过您之前的活动(应用程序)进行控制。每次,您都必须在第二个应用程序中选择该特定地址/数字。