آموزش برنامه نویسی برای اندروید با ایکلیپس(25)-ارتباط اکتیویتی ها با استفاده از Intentها
منبع:راسخون
یک اپلیکیشن اندروید می تواند هیچ اکتیویتی نداشته باشد یا چندین اکتیویتی داشته باشد. زمانیکه اپلیکیشن تان بیش از یک اکتیویتی داشته باشد، نیاز است از یک اکتیویتی به اکتیویتی دیگر حرکت کنید. در اندروید، حرکت بین اکتیویتی ها از طریق intent انجام می شود.
در زیر نشان می دهد که چگونه اکتیویتی دیگری به پروژه اضافه کنید و سپس بین دو اکتیویتی حرکت کنید.
1- در ایکلیپس پروژه ای به نام UsingIntent ایجاد کنید.
2- روی فولدر نام پکیج، زیر فولدر src کلیک راست کنید و از منوی باز شده گزینه ی New و سپس Class را انتخاب کنید.
2- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3- package="net.rasekhoon.raeesiyan"
4- android:versionCode="1"
5- android:versionName="1.0" >
6-
7- <uses-sdk android:minSdkVersion="8" />
8-
9- <application
10- android:icon="@drawable/ic_launcher"
11- android:label="@string/app_name" >
12- <activity
13- android:name=".UsingIntentActivity"
14- android:label="@string/app_name" >
15- <intent-filter>
16- <action android:name="android.intent.action.MAIN" />
17-
18- <category android:name="android.intent.category.LAUNCHER" />
19- </intent-filter>
20- </activity>
21-
22- <activity
23- android:label="Second Activity"
24- android:name=".SecondActivity" >
25- <intent-filter >
26- <action android:name="net.learn2develop.SecondActivity" />
27-
28- <category android:name="android.intent.category.DEFAULT" />
29- </intent-filter>
30- </activity>
31-
32- </application>
2- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3- android:layout_width="fill_parent"
4- android:layout_height="fill_parent"
5- android:orientation="vertical" >
6-
7- <TextView
8- android:layout_width="fill_parent"
9- android:layout_height="wrap_content"
10- android:text="This is the Second Activity!" />
11-
12- </LinearLayout>
7- در فایل SecondActivity.java دستورات زیر که بولد شده، را وارد می کنیم:
1- package net.rasekhoon.raeesiyan;
2-
3- import android.app.Activity;
4- import android.os.Bundle;
5-
6-
7- public class SecondActivity extends Activity {
8-
9- @Override
10- public void onCreate(Bundle savedInstanceState) {
11- super.onCreate(savedInstanceState);
12- setContentView(R.layout.secondactivity);
13- }
14- }
2- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3- android:layout_width="fill_parent"
4- android:layout_height="fill_parent"
5- android:orientation="vertical" >
6-
7- <TextView
8- android:layout_width="fill_parent"
9- android:layout_height="wrap_content"
10- android:text="@string/hello" />
11- <Button
12- android:layout_width="fill_parent"
13- android:layout_height="wrap_content"
14- android:text="Display second activity"
15- android:onClick="onClick"/>
16-
17- </LinearLayout>
2-
3- import android.app.Activity;
4- import android.content.Intent;
5- import android.os.Bundle;
6- import android.view.View;
7-
8- public class UsingIntentActivity extends Activity {
9- /** Called when the activity is first created. */
10- @Override
11- public void onCreate(Bundle savedInstanceState) {
12- super.onCreate(savedInstanceState);
13- setContentView(R.layout.main);
14- }
15- public void onClick(View view) {
16- startActivity(new Intent("net.learn2develop.SecondActivity"));
17- }
18- }
یک اکتیویتی از یک کامپوننت UI (برای مثال main.xml) و یک کامپوننت کلاس(UsingIntentactivity.java) تشکیل شده است. اگر شما می خواهید یک اکتیویتی به پروژه تان اضافه کنید، باید این دو کامپوننت را ایجاد کنید.
در فایل AndroidManifest.xml ،
android:label="Second Activity"
android:name=".SecondActivity" >
<intent-filter >
<action android:name="net.learn2develop.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
• نام (کلاس) اکتیویتی جدید SecondActivity است.
• برچسب اکتیویتی Second Activity نام دارد.
• نام فیلتر Intent برای اکتیویتی جدید net.learn2develop.SecondActivity است. اکتیویتی های دیگر که می خواهند این اکتیویتی را فراخوانی کنند آن را از طریق این نام احضار می کنند. به طور ایده آل، شما باید برعکس نام دامین شرکت خودتان را به عنوان نام فیلتر Intent استفاده کنید تا شانس اینکه اپلیکیشن های دیگر از این نام استفاده کنند کمتر باشد. (در بخش بعدی در باره ی این که دو یا چند اپلیکیشن دارای فیلتر Intent یکسان داشته باشند، بحث می کنیم).
• دسته برای این فیلتر Intent ، android.intent.category.DEFAULT است. شما باید این را به فیلتر Intent اضافه کنید بطوریکه این اکتیویتی بتواند بوسیله ی اکتیویتی دیگر با استفاده از متد startActivity() شروع شود.
زمانیکه دکمه کلیک شود، از متد startActivity() برای نمایش secondActivity بوسیله ی یک نمونه از کلاس Intent استفاده می کنید و نام فیلتر Intent ، SecondActivity را به آن پاس می دهید(که net.learn2develop.SecondActivity است).
public void onClick(View view) {
startActivity(new Intent(“net.learn2develop.SecondActivity”));
}
اکتیویتی ها در اندروید می توانند بوسیله ی هر اپلیکیشن در حال اجرا روی وسایل احضار شوند. برای مثال، شما می توانید یک پروژه ی اندرویدی جدید ایجاد کنید و سپس (با استفاده از فیلتر Intent ، net.learn2develop.SecondActivity ) SecondActivity را نمایش دهید. این یکی از مفاهیم ابتدایی در اندروید است که اپلیکیشن را قادر می سازد تا به سادگی دیگری را احضار کند.
اگر اکتیویتی که شما می خواهید احضار کنید در داخل همان پروژه باشد، می توانید دستور زیر را بازنویسی کنید:
startActivity(new Intent(this, SecondActivity.class));
به هر حال، این روش فقط زمانی قابل اجرا است که اکتیویتی ای که شما می خواهید نمایش دهید در داخل همان پروژه باشد همانند اکتیویتی جاری.
رفع برخورد فیلتر Intent
در بخش قبلی، شما یاد گرفتید که عنصر <intent-filter> مشخص می کند که چگونه اکتیویتی تان می تواند توسط اکتیویتی دیگر احضار می شود. وقتی که اکتیویتی دیگری با همین نام فیلتر وجود داشته باشد(در همان اپلیکیشن یا اپلیکیشن دیگر)، چه اتفاقی می افتد؟
برای مثال، فرض کنید اپلیکیشن شما اکتیویتی دیگری به نام Activity3 داشته باشد، که در فایل AndroidManifest.xml آن دستورات زیر باشد:
2- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3- package="net.rasekhoon.raeesiyan"
4- android:versionCode="1"
5- android:versionName="1.0" >
6-
7- <uses-sdk android:minSdkVersion="8" />
8-
9- <application
10- android:icon="@drawable/ic_launcher"
11- android:label="@string/app_name" >
12- <activity
13- android:name=".UsingIntentActivity"
14- android:label="@string/app_name" >
15- <intent-filter>
16- <action android:name="android.intent.action.MAIN" />
17-
18- <category android:name="android.intent.category.LAUNCHER" />
19- </intent-filter>
20- </activity>
21- <activity
22- android:label="Second Activity"
23- android:name=".SecondActivity" >
24- <intent-filter >
25- <action android:name="net.learn2develop.SecondActivity" />
26-
27- <category android:name="android.intent.category.DEFAULT" />
28- </intent-filter>
29- </activity>
30- <activity
31- android:label="Third Activity"
32- android:name=".ThirdActivity" >
33- <intent-filter >
34- <action android:name="net.learn2develop.SecondActivity" />
35-
36- <category android:name="android.intent.category.DEFAULT" />
37- </intent-filter>
38-
39- </activity>
40-
41- </application>
42-
43- </manifest>
startActivity(new Intent(“net.learn2develop.SecondActivity”));
اگر شما تیک گزینه ی “Use by default for this action” را بزنید و یک اکتیویتی را انتخاب کنید، Intent آنها یعنی “net.learn2develop.SecondActivity” دوباره فراخوانی می شود، این کار اکتیویتی قبلی را که انتخاب کرده بودید را اجرا می کند.
برای پاک کردن این پیش فرض، به تنظیمات اپلیکیشن در اندروید بروید و ب صورت زیر عمل کنید:
Apps ➪ Manage applications
و سپس نام اپلیکیشن را انتخاب کنید. مانند تصویر زیر:
متد startActivity() اکتیویتی دیگر را احضار می کند اما نتیجه ای برای اکتیویتی جاری برنمی گرداند. برای مثال، اکتیویتی ای دارید که برای دریافت نام کاربری و رمز عبور به کاربر اعلان می کند. اطلاعات ورودی توسط کاربر در آن اکتیویتی باید برای پردازش بیشتر به اکتیویتی فراخواننده باز گردد. اگر نیاز به بازگشت اطلاعات از یک اکتیویتی داشته باشید، باید در عوض از متد startActivityForResult() استفاده کنید. در ادامه به این می پردازد.
کسب یک نتیجه از یک اکتیویتی
1- از همان پروژه ای که در بخش قبل ساخته اید استفاده کنید و دستورات زیر که بولد شده اند(11 تا 24) را به فایل secondactivity.xml اضافه کنید:
2- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3- android:layout_width="fill_parent"
4- android:layout_height="fill_parent"
5- android:orientation="vertical" >
6-
7- <TextView
8- android:layout_width="fill_parent"
9- android:layout_height="wrap_content"
10- android:text="This is the Second Activity!" />
11- <TextView
12- android:layout_width="fill_parent"
13- android:layout_height="wrap_content"
14- android:text="Please enter your name" />
15- <EditText
16- android:id="@+id/txt_username"
17- android:layout_width="fill_parent"
18- android:layout_height="wrap_content" />
19- <Button
20- android:id="@+id/btn_OK"
21- android:layout_width="fill_parent"
22- android:layout_height="wrap_content"
23- android:text="OK"
24- android:onClick="onClick"/>
25-
26- </LinearLayout>
2-
3- import android.app.Activity;
4- import android.content.Intent;
5- import android.net.Uri;
6- import android.os.Bundle;
7- import android.view.View;
8- import android.widget.EditText;
9-
10-
11- public class SecondActivity extends Activity {
12-
13- @Override
14- public void onCreate(Bundle savedInstanceState) {
15- super.onCreate(savedInstanceState);
16- setContentView(R.layout.secondactivity);
17- }
18-
19-
20- public void onClick(View view) {
21- Intent data = new Intent();
22- //---get the EditText view---
23- EditText txt_username =
24- (EditText) findViewById(R.id.txt_username);
25- //---set the data to pass back---
26- data.setData(Uri.parse(txt_username.getText().toString()));
27- setResult(RESULT_OK, data);
28- //---closes the activity---
29- finish();
30- }
31- }
3- import android.app.Activity;
4- import android.content.Intent;
5- import android.os.Bundle;
6- import android.view.View;
7- import android.widget.Toast;
8-
9- public class UsingIntentActivity extends Activity {
10-
11- int request_Code = 1;
12-
13- /** Called when the activity is first created. */
14- @Override
15- public void onCreate(Bundle savedInstanceState) {
16- super.onCreate(savedInstanceState);
17- setContentView(R.layout.main);
18- }
19- public void onClick(View view) {
20- //startActivity(new Intent(“net.learn2develop.SecondActivity”));
21- //or
22- //startActivity(new Intent(this, SecondActivity.class));
23- startActivity(new Intent("net.learn2develop.SecondActivity"));
24- startActivityForResult(new Intent(
25- "net.learn2develop.SecondActivity"),
26- request_Code);
27- }
28-
29- @Override
30- public void onActivityResult(int requestCode, int resultCode, Intent data)
31- {
32- if (requestCode == request_Code) {
33- if (resultCode == RESULT_OK) {
34- Toast.makeText(this, data.getData().toString(),
35- Toast.LENGTH_SHORT).show();
36- }
37- }
38- }
39- }
برای فراخوانی یک اکتیویتی و انتظار برای یک نتیجه ای که برمی گرداند، باید از متد startActivityForResult() استفاده کنید مانند زیر:
startActivityForResult(new Intent(“net.learn2develop.SecondActivity”), request_Code);
علاوه بر پاس دادن به یک شی Intent نیاز به پاس دادن request_Code(کد درخواست) دارید. request_Code در واقع یک مقدار صحیح است که برای شناسایی اکتیویتی که شما فراخوانی می کنید، بکار می رود. این مورد نیاز است زمانیکه یک اکتیویتی یک مقدار بر می گرداند شما باید راهی برای شناسایی آن داشته باشید. برای مثال، شما ممکن است چندین اکتیویتی همزمان داشته باشید و بعضی از اکتیویتی ها ممکن است فورا بازگشت نکند(برای مثال، در انتظار پاسخ از سرور). هنگامیکه یک اکتیویتی بر می گردد، برای تعیین اینکه کدام اکتیویتی واقعا برگشت به این کد درخواست()نیاز دارید.
نکته: اگر کد درخواست را 1- قرار دهیم، سپس فراخوانی آن با استفاده از متد ()startActivityForResult معادل فراخوانی آن با استفاده از متد ()startActivity است. این است که هیچ نتیجه ای بر نخواهد گشت.
برای یک اکتیویتی برای برگرداندن یک مقدار به فراخوانی اکتیویتی، از یک شی Intent برای ارسال داده ی بازگشتی از طریق متد setData() استفاده می کنید.
//---get the EditText view---
EditText txt_username =
(EditText) findViewById(R.id.txt_username);
//---set the data to pass back---
data.setData(Uri.parse(txt_username.getText().toString()));
setResult(RESULT_OK, data);
//---closes the activity---
finish();
متد setResult() یک کد نتیجه(result code) قرا می دهد(Result_OK یا Result_CANCELLED) و data(یک شی Intent) به اکتیویتی فراخواننده برگردانده می شود. متد finish() اکتیویتی را می بندد و بازگشتی کنترل را به اکتیویتی فراخواننده برمی گرداند.
در اکتیویتی فراخواننده، باید متد onActivityResult() را پیاده سازی کنید، که این متد هر زمانی که اکتیویتی بازگشت فراخوانی می شود.
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_Code) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, data.getData().toString(),
Toast.LENGTH_SHORT).show();
}
}
}
پاس دادن Data از طریق یک شی Intent
علاوه بر بازگشت داده از یک اکتیویتی، پاس دادن داده به یک اکتیویتی یک امری عادی است. برای مثال، در مثال قبلی شما ممکن است بخواهید برخی متن پیشفرض در ویرایشگر متن را قبل از اینکه نمایش داده شود، تنظیم کنید. در این مورد، شما ممکن است از شی Intent برای پاس دادن داده به آکتیویتی مورد نظر استفاده کنید.
در ادامه می خواهیم به شما نشان دهیم که روشهای مختلفی وجود دارد که شما می تونید داده را بین اکتیویتی ها پاس دهید.
پاس دادن داده به اکتیویتی مورد نظر
1- یک پروژه ی اندرویدی جدید در ایکلیپس ایجاد کنید و نام آن را PassingData قرار دهید.
2- دستورات زیر (11 تا 16) را بولد شده اند را به فایل main.xml آن اضافه کنید:
2- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3- android:layout_width="fill_parent"
4- android:layout_height="fill_parent"
5- android:orientation="vertical" >
6-
7- <TextView
8- android:layout_width="fill_parent"
9- android:layout_height="wrap_content"
10- android:text="@string/hello" />
11- <Button
12- android:id="@+id/btn_SecondActivity"
13- android:layout_width="fill_parent"
14- android:layout_height="wrap_content"
15- android:text="Click to go to Second Activity"
16- android:onClick="onClick"/>
17-
18- </LinearLayout>
2- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3- android:layout_width="fill_parent"
4- android:layout_height="fill_parent"
5- android:orientation="vertical" >
6- <TextView
7- android:layout_width="fill_parent"
8- android:layout_height="wrap_content"
9- android:text="Welcome to Second Activity" />
10- <Button
11- android:id="@+id/btn_MainActivity"
12- android:layout_width="fill_parent"
13- android:layout_height="wrap_content"
14- android:text="Click to return to main activity"
15- android:onClick="onClick"/>
16- </LinearLayout>
4- یک فایل کلاس جدید در پکیج اضافه کنید و نام آن را SecondActivity.java قرار دهید و دستورات زیر را در آن وارد کنید:
1- package net.Rasekhoon.raeesiyan;
2-
3- import android.app.Activity;
4- import android.content.Intent;
5- import android.net.Uri;
6- import android.os.Bundle;
7- import android.view.View;
8- import android.widget.Toast;
9-
10-
11- public class SecondActivity extends Activity {
12-
13- @Override
14- public void onCreate(Bundle savedInstanceState) {
15- super.onCreate(savedInstanceState);
16- setContentView(R.layout.secondactivity);
17- //---get the data passed in using getStringExtra()---
18- Toast.makeText(this, getIntent().getStringExtra("str1"),
19- Toast.LENGTH_SHORT).show();
20- //---get the data passed in using getIntExtra()---
21- Toast.makeText(this, Integer.toString(
22- getIntent().getIntExtra("age1", 0)),
23- Toast.LENGTH_SHORT).show();
24- //---get the Bundle object passed in---
25- Bundle bundle = getIntent().getExtras();
26- //---get the data using the getString()---
27- Toast.makeText(this, bundle.getString("str2"),
28- Toast.LENGTH_SHORT).show();
29- //---get the data using the getInt() method---
30- Toast.makeText(this, Integer.toString(bundle.getInt("age2")),
31- Toast.LENGTH_SHORT).show();
32- }
33-
34-
35- public void onClick(View view) {
36- //---use an Intent object to return data---
37- Intent i = new Intent();
38- //---use the putExtra() method to return some
39- // value---
40- i.putExtra("age3", 45);
41- //---use the setData() method to return some value---
42- i.setData(Uri.parse(
43- "Something passed back to main activity"));
44- //---set the result with OK and the Intent object---
45- setResult(RESULT_OK, i);
46- //---destroy the current activity---
47- finish();
48- }
49- }
2- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3- package="net.Rasekhoon.raeesiyan"
4- android:versionCode="1"
5- android:versionName="1.0" >
6-
7- <uses-sdk android:minSdkVersion="8" />
8-
9- <application
10- android:icon="@drawable/ic_launcher"
11- android:label="@string/app_name" >
12- <activity
13- android:name=".PassingDataActivity"
14- android:label="@string/app_name" >
15- <intent-filter>
16- <action android:name="android.intent.action.MAIN" />
17-
18- <category android:name="android.intent.category.LAUNCHER" />
19- </intent-filter>
20- </activity>
21-
22- <activity
23- android:label="Second Activity"
24- android:name=".SecondActivity" >
25- <intent-filter >
26- <action android:name="net.learn2develop.PassingDataSecondActivity" />
27-
28- <category android:name="android.intent.category.DEFAULT" />
29- </intent-filter>
30- </activity>
31-
32- </application>
33-
34- </manifest>
2-
3- import android.app.Activity;
4- import android.content.Intent;
5- import android.os.Bundle;
6- import android.view.View;
7- import android.widget.Toast;
8-
9-
10- public class PassingDataActivity extends Activity {
11-
12- /** Called when the activity is first created. */
13- @Override
14- public void onCreate(Bundle savedInstanceState) {
15- super.onCreate(savedInstanceState);
16- setContentView(R.layout.main);
17- }
18-
19-
20- public void onClick(View view) {
21- Intent i = new
22- Intent("net.learn2develop.PassingDataSecondActivity");
23- //---use putExtra() to add new name/value pairs---
24- i.putExtra("str1", "This is a string");
25- i.putExtra("age1", 25);
26- //---use a Bundle object to add new name/values
27- // pairs---
28- Bundle extras = new Bundle();
29- extras.putString("str2", "This is another string");
30- extras.putInt("age2", 35);
31- //---attach the Bundle object to the Intent object---
32- i.putExtras(extras);
33- //---start the activity to get a result back---
34- startActivityForResult(i, 1);
35- }
36-
37-
38- @Override
39- public void onActivityResult(int requestCode,
40- int resultCode, Intent data)
41- {
42- //---check if the request code is 1---
43- if (requestCode == 1) {
44- //---if the result is OK---
45- if (resultCode == RESULT_OK) {
46- //---get the result using getIntExtra()---
47- Toast.makeText(this, Integer.toString(
48- data.getIntExtra("age3", 0)),
49- Toast.LENGTH_SHORT).show();
50- //---get the result using getData()---
51- Toast.makeText(this, data.getData().toString(),
52- Toast.LENGTH_SHORT).show();
53- }
54- }
55- }
56- }
هرچند این اپلیکیشن به طور بصری هیجان انگیز نیست، اما برخی از روش های مهم پاس دادن داده بین اکتیویتی ها را نشان می دهد.
ابتدا، شما می توانید از متد putExtra() از یک شی Intent برای اضافه کردن یک جفت مقدار و نام استفاده کنید:
//---use putExtra() to add new name/value pairs---
i.putExtra(“str1”, “This is a string”);
i.putExtra(“age1”, 25);
در دستورات قبل شما دو جفت مقدار/نام به شی Intent اضافه کرده اید: یکی نوع رشته و دیگری نوع صحیح.
درکنار استفاده از متد putExtra()، شما می توانید یک شی Bundle ایجاد کنید و آن را به متد putExtras() نسبت دهید. شی Bundle به عنوان یک دیکشنری شی است که شامل یک مجموعه از نام/مقدار می شود. سپس به شی Intent نسبت داده می شود.
//---use a Bundle object to add new name/values pairs---
Bundle extras = new Bundle();
extras.putString(“str2”, “This is another string”);
extras.putInt(“age2”, 35);
//---attach the Bundle object to the Intent object---
i.putExtras(extras);
در اکتیویتی secondactivity، برای بدست آوردن داده ی فرستاده شده توسط شی Intent، ابتدا شما شی Intent را با استفاده از متد getIntent() بدست می آورید و سپس متد getStringExtra() آنرا برای بدست آوردن مقدار رشته (که توسط متد putExtra() تنظیم شده) فراخوانی می کنید:
//---get the data passed in using getStringExtra()---
Toast.makeText(this,getIntent().getStringExtra(“str1”),
Toast.LENGTH_SHORT).show();
در این مورد، شما باید متد مناسب را برای استخراج جفت نام/مقدار را بر اساس نوع مجموعه داده فراخوانی کنید. برای مقدار صحیح، از متد getIntExtra() استفاده کنید(آرگومان دوم مقدار پیشفرض در موردی که هیچ مقداری در نام مشخص ذخیره نشده است):
//---get the data passed in using getIntExtra()---
Toast.makeText(this,Integer.toString(
getIntent().getIntExtra(“age1”, 0)),
Toast.LENGTH_SHORT).show();
برای بازیابی مقدار شی Bundle، از متد getExtras() استفاده کنید:
//---get the Bundle object passed in---
Bundle bundle = getIntent().getExtras();
برای دریافت جفت نام/مقدار از متد مناسب استفاده کنید. برای مقدار رشته ای از متد getString() استفاده کنید:
//---get the data using the getString()---
Toast.makeText(this, bundle.getString(“str2”),
Toast.LENGTH_SHORT).show();
به همین ترتیب، برای بازیابی مقدار صحیح از متد getInt() استفاده کنید:
//---get the data using the getInt() method---
Toast.makeText(this,Integer.toString(bundle.getInt(“age2”)),
Toast.LENGTH_SHORT).show();
روش دیگر برای پاس دادن داده به اکتیویتی استفاده از متد setData() است، (مثلا هنگام استفاده در بخش قبل)مانند زیر:
//---use the setData() method to return some value---
i.setData(Uri.parse(
“Something passed back to main activity”));
معمولا شما برای قرار دادن داده بر روی یک شی Intent ای که می خواهید عملیات انجام دهد،از متد setData() استفاده می کنید(مانند ارسال URL به یک شی Intent به طوریکه می تواند یک مرورگر وب را احضار کند تا یک صفحه ی وب را نمایش دهد).
برای بازیابی مجموعه داده با استفاده از متد setData()، از متد getData() استفاده کنید(در این مثال data یک شی Intent است)
//---get the result using getData()---
Toast.makeText(this, data.getData().toString(),
Toast.LENGTH_SHORT).show();
/ج
{{Fullname}} {{Creationdate}}
{{Body}}