簡體   English   中英

Intent.setData與Intent.putExtra

[英]Intent.setData vs Intent.putExtra

我正在嘗試按照本教程:

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

我理解putExtra的作用

但我不明白setData()的含義是什么?

Android文檔,沒什么用處:

Set the data this intent is operating on.

這對常數意味着什么

intent.setData(CalendarContract.Events.CONTENT_URI);

當我注釋掉這一行時似乎沒有任何影響。

setData()用於指向數據對象的位置 (例如文件),而putExtra()添加簡單數據類型 (例如SMS文本字符串)。

以下是兩個澄清的例子:

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);

有關更多信息,我建議閱讀有關IntentssetData()setType()setDataAndType()

setData()用於Android系統,以查找與隱式intent中的data屬性匹配的應用程序組件。


putExtra()主要用於通過Android系統將一些信息傳遞給選定的應用程序組件。

我認為.putExtra是傳輸字符串或其他東西。 像Aramex:P

.setData用於設置intent的數據類型。

在意圖中看到它是Intent.ACTION_INSERT 所以它正在等待插入的東西。 這就是你設置數據的原因。 .setData(CalendarContract.Events.CONTENT_URI); 您插入了日歷事件。

我在這里找到了一個很好的答案: https//google-developer-training.gitbooks.io/android-developer-fundamentals-course-concepts/content/en/Unit%201/21_c_understanding_activities_and_intents.html

使用意圖數據字段(Intent.setData): - 當您只有一條信息需要發送到已啟動的活動時。 - 當該信息是可以由URI表示的數據位置時。

使用intent extras(Intent.putExtra): - 如果要將多條信息傳遞給已啟動的活動。 - 如果您要傳遞的任何信息不能通過URI表達。

意圖數據和附加內容不是唯一的; 您可以將URI的數據和附加內容用於已啟動的活動處理該URI中的數據所需的任何其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM