Intent.setData vs Intent.putExtra

2022-09-01 14:09:06

我正在尝试遵循本教程:

http://www.vogella.com/articles/AndroidCalendar/article.html

我了解 putExtra 是做什么的

但是我不明白setData()是什么意思?

Android Docs,没有多大帮助:

Set the data this intent is operating on.

这对常数意味着什么

intent.setData(CalendarContract.Events.CONTENT_URI);?

当我注释掉这一行时,似乎没有任何影响。


答案 1

setData()用于指向数据对象的位置(例如文件),同时添加简单的数据类型(例如 SMS 文本字符串)。putExtra()

下面是两个需要澄清的示例:

setData()在此处用于设置要共享的文件的位置。

File fileToShare = new File("/sdcard/somefile.dat");
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.setData(Uri.fromFile(fileToShare));
startActivity(i);

putExtra()在此处用于设置要共享的文本内容。

Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
String textBodyString = "some text";
i.putExtra(Intent.EXTRA_TEXT, textBodyString);
i.setType(HTTP.PLAIN_TEXT_TYPE);

有关更多信息,我建议阅读一些关于 Intents 和 , 以及setData()setType()setDataAndType()


答案 2

setData() 用于 Android 系统查找与隐式意图中的数据属性匹配的应用程序组件。


putExtra() 主要用于通过 Android 系统将一些信息传递给选定的应用程序组件。


推荐