如何在没有外部存储的情况下在意图内发送数据

时间:2012-02-27 18:59:53

标签: android android-intent share

我正在尝试将数据发送到ACTION_VIEW或ACTION_SEND意图而不将该数据写入文件。

大多数意图需要一个Uri,它通常基于文件路径或URL,如下所示:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(context.getFilesDir(), TEMP_FILE_NAME));
intent.setDataAndType(uri, "application/pdf");
context.startActivity(intent);

我希望我分享的数据与外部存储上的每个人都无法查看。内部存储(如上例所示)未被授予被调用的意图(意味着pdf查看器无法在我的应用程序的私有空间中看到文件)。

Diane Hackborne暗示能够在意图中复制数据:http://groups.google.com/group/android-developers/browse_thread/thread/be9b069ca8906417#

但我还没有找到任何其他数据如何发生。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

这取决于您的数据采用何种格式/大小,但最简单的选择可能是将数据作为“额外”包含在Intent上。

Extras可以有各种不同的类型,包括大多数Java基元(Stringintdouble等)和Bundle s和{{1 }}秒。

如果你有自己的类结构,你也可以实现Parcelable并将你自己的类的实例包含为额外的。

但是,我会说如果您的数据量很大,那么使用ArrayList在内存中传递它可能不是最好的主意。如果是这种情况,您可能只需咬住子弹并在通话期间暂时将数据写入存储空间,并在您的通话Intent / Activity重新获得焦点时将其清除。