میحرلا نمحرلا للها مسب - tahlildadeh.com android.pdf · 7 دحاو - 561...
TRANSCRIPT
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
بسم اهلل الرحمن الرحیم
آموزشگاه تحلیل داده
برنامه نویسی و دیتابیس در ایران ترین مرکز تخصصی
) اول قسمت ( اندروید در Intent آموزش
مدرس : مهندس افشین رفوآ
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
)قسمت اول(در اندروید Intent آموزش
ها به منظور برقراری ارتباط بین کامپوننت های اندروید را تشریح intentاین فصل آموزشی شیوه ی بکارگیری
.نوشته شده است Android 4.4و Eclipse 4.4، Java 1.6می کند و بر پایه ی
فهرست محتوا
1 .Intent ها وintent filter ها
Intent چیست و چه کاربردی دارد؟
راه اندازیactivity به وسیله ی متد( مورد نظرstartActivity (intent) )
Sub-activity چیست؟
راه اندازیServices به وسیله یintent
intent. انواع 2
معرفی انواع متفاوتintent
Intent های صریح(Explicit intent)
Intent های ضمنی(Implicit intent)
ها activity. انتقال داده بین 3
)انتقال داده به کامپوننت مقصد )مورد نظر
مثال : به اشتراک گذاری اطالعات از طریق(share) intent
بازیابی و دریافت نتیجه ازsub-activity
ها intent filter. معرفی 4
Intent filter چه کاربردی دارد ؟
تعریفintent filter
1مثال
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
ثبت یکactivity برای اینتنتACTION_SEND
intent. فعال سازی رویدادها به وسیله ی 5
های معتبر intent receiver. بررسی و شناسایی 6
ها activity. تمرین : راه اندازی 7
هدف اصلی این تمرین
ایجاد پروژه و طرح بندی اصلی
ایجاد فایلlayout جدید
ایجادactivity دیگر
راه اندازیsub-activity
ارسال داده بهResultActivity
دستیابی به داده هایintent درResultActivity
ها sub-activity. تمرین : دریافت داده از 8
هدف این تمرین
برگرداندن داده ازResultActivity
ارزیابی اطالعات بازگشتی
ها intentبکارگیری. راه حل : 9
مطالب این فصلنحوه ی پیاده سازی
کدactivity
به عنوان مرورگر activity. تمرین : ثبت و تخصیص یک 10
هدف از این تمرین
ساختن پروژه
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
ثبت یکactivity به عنوان مرورگر
اعتبارسنجی و تست
: تبدیل آن به یک مرورگر کامل تمرین بیشتر
intent. تمرین : انتخاب تصویر به وسیله ی 11
مقصود نهایی تمرین
ایجاد پروژه
تست
های ضمنی مختلف intent. تمرین : استفاده از 12
هدف تمرین
ساختن پروژه
تست برنامه
1 .Intent ها وintent filter ها
Intent چیست و چه کاربردی دارد؟
Intent ها در واقع مجموعه ای از پیام های ناهمگام(asynch message) هستند که به مولفه های برنامه ی
intentاجازه می دهند از دیگر کامپوننت های اندروید قابلیت درخواست کند ) (app components) کاربردی
بین زیرروال ها یا ،در حقیقت یک مکانیزم نرم افزاری می باشد که برای کاربر این امکان را فراهم می کند
ها intent .معینی به انجام برسد( taskعملکردهای برنامه های کاربردی هماهنگی ایجاد کرده تا یک وظیفه یا
ننت های یک برنامه با کامپوننت های برنامه های همچنین این قابلیت را ایجاد می کند که عالوه بر کامپو
ای اشاره کرد که فعالیتی مثل activityبه عنوان مثال می توان به .کاربردی دیگر نیز تعامل داشته باشید
.کند (trigger)ای دیگر )خارجی( است را راه اندازی activityگرفتن عکس را که متعلق به
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
Intent ها اشیایی از نوعandroid.content.intent کدی که شما می نویسید قادر است آن ها را به .هستند
می ،به طور مثال .سیستم اندروید ارسال کرده تا از این طریق کامپوننت های موردنظر شما تعریف شوند
.ازی کنددستور بدید که برنامه ی معینی را راه اند intentبه () StartActivityتوانید با استفاده از متد
Intent از طریقBundle به منظور ارسال اطالعات بین )= به طور معمولactivity های مختلف اندروید بکار می
receivingکنندهحال این اطالعات توسط کامپوننت دریافت ،رود( قادر است اطالعات الزمه را دربرگیرد
component) ) مورد استفاده قرار می گیرد.
راه اندازیactivity به وسیله ی متد( مورد نظر (startActivity intent) )
Context متد مذکور در شی .استفاده کنید startActivity (intent) از متد ،activityجهت راه اندازی و اجرای
.بسط و توسعه داده می شود Activityتعریف شده که توسط )کالس(
.نمایش می دهد intentدیگر را به وسیله ی activityکد زیر نحوه ی راه اندازی یک
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
# Start the activity connect to the
# specified class
Intent i = new Intent(this، ActivityTwo.class);
startActivity(i);
Sub-activities
.های دیگر راه اندازی می شوند activityهایی که توسط activityعبارتند از
راه اندازیServices به وسیله یintent
را startService (Intent)برای این منظور متد .راه اندازی کرد intentها را از طریق serviceهمچنین می توان
.بکارببرید
intent. انواع 2
معرفی انواع متفاوتintent
.Implicitو Explicitپشتیبانی می کند : intentاندروید از دو نوع
explicitتعریف کند )که در آن صورت intentداخل تواند کامپوننت مقصود را مستقیم یک اپلیکیشن می
intent ( یا از سیستم اندروید درخواست کند تا مولفه های ثبت شده )نامیده می شودregistered
componentبر اساس داده های ( راintent که به آن( ارزیابی کندimplicit intent )گفته می شود.
Intent های صریح(Explicit intent)
مولفه را ) کامپوننتی را که باید توسط سیستم اندروید فراخوانده شود( با استفاده از کالس جاوا Intentاین
(java class)، به صورت صریح تعریف می کند ،به عنوان شناسه.
.و ارسال آن به سیستم اندروید را با مثال نمایش می دهد explicit intentکد زیر نحوه ی ایجاد
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
Intent i = new Intent(this، ActivityTwo.class);
i.putExtra("Value1"، "This value one for ActivityTwo ");
i.putExtra("Value2"، "This value two ActivityTwo");
در این ،درون اپلیکیشن خود بکار می برید activityهای صریح را به منظور راه اندازی intentشما اغلب
را می خواهید راه اندازی کنید )و دیگر نیازی به تالش و زحمت activityاطالع دارید که کدام صورت دقیق
.هست وجود ندارد( implicit intentبیشتر که الزمه ی
Intent های ضمنی(Implicit intent)
مولفه یا کامپوننتی که باید فراخوانی شود را های ضمنی واضح و مستقیم intent ،های صریح intentبرخالف
ای که باید اجرا شود را تعریف می کند ) همچنین می (action)به عبارتی روشن تر تنها عمل ;مشخص نمی کند
.نوع داده را مشخص کرد( uriبه همراه یک intentتوان با بکارگیری همزمان این نوع
.یک صفحه ی وب را نمایش دهد ،برای مثال تکه کد زیر به سیستم اندروید دستور می دهد
Intent i = new Intent(Intent.ACTION_VIEW،
Uri.parse("http://www.vogella.com"));
startActivity(i);
actionبه دنبال همه ی کامپوننت هایی که برای intent ،ضمنی به سیستم اندروید intentدر صورت ارسال
.معین تخصیص یافته و نوع داده ی مناسب آن می گردد
.اندروید خود به صورت مستقیم کامپوننت مزبور را راه اندازی می کند ،چنانچه تنها یک کامپوننت یافت شود
selection)کاربر یک محاوره ی انتخاب ،اما اگر چندین مولفه با هم توسط سیستم اندروید شناسایی شود
dialogue) دریافت می کند که به کاربر اجازه می دهد کامپوننت مناسب را برایintent انتخاب کند.
.معینی تخصیص دهد (actions)ننت این قابلیت را دارد که خود را به عملیات کامپو
ها activity. انتقال داده بین 3
)انتقال داده به کامپوننت مقصد )مورد نظر
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
Intent داده های سرآیند حامل (header data) معینی از جملهaction /می .نوع آن و غیره ،عملیات دلخواه ..
نمونه ی .( دربرگیردBundleمی تواند اطالعاتی اضافه بر سازمان )بر اساس نمونه ی کالس intentالبته .باشد
بازیابی مربوط intentاز () getExtras( را می توان با استفاده از متد Bundle)کالس بیان شدهکالس
(retrieve) کرد.
() PutExtra( overloaded methods) اضافه بارگذاری شده یاین امکان نیز وجود دارد که به کمک متدهای
)= همان Extrasمتدهای .اضافه یا ضمیمه کرد Bundleبه کالس مستقیم داده های الزمه را ،intentاشیا
intent هایputextra و(getextra کلید /یک جفت مقدار(key/value pair) کلید .هستند(key) نام برده
،string، Bundleمی توان عالوه بر اشیإ از نوع valueدر رابطه با ،رشته است stringهمیشه از نوع
Parceable وSerializable، از نوع داده های اولیه(primitive data types) از جملهint، float به عنوان(
.مقدار( نیز بهره گرفت
و () getActionقادر است از طریق / با استفاده از متدهای (receiving component)مولفه ی دریافت کننده
getData ()، در شی( به اطالعات مذکور intent object / intentدسترسی پیدا کند ). حال خودintent object
.قابل بازیابی می باشد () getIntentبه وسیله ی متد
داده () getIntent (). getExtrasقادر است با فراخوانی متد ،ی کندموردنظر را دریافت م intentکامپوننتی که
یر با مثال به نمایش گذاشته شده.این امر در تکه کد ز .های اضافی را دریافت کند
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
// get data via the key
String value1 = extras.getString(Intent.EXTRA_TEXT);
if (value1 != null) {
// do something with the data
}
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
مثال : به اشتراک گذاری اطالعات از طریق(share intent)
به کاربر این امکان را می دهد تا اطالعات یا (android apps) برنامه های کاربردی اندرویدتعداد زیادی از
می توانید .(twitterو Facebook، G+، Gmailداده های دلخواه را با دیگران به اشتراک بگذارد )از قبیل
تکه کد .اطالعات نام برده را به یکی از این مولفه ها ارسال کنید ،جهت به اشتراک گذاری اطالعات مورد نظر
اپلیکیشن با مثال نمایش می دهد. ای را در محیط intentزیر نمونه ای از کاربرد چنین
// this runs، for example، after a button click Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_TEXT، "News
for you!");
startActivity(intent);
بازیابی نتیجه ازsub-activity
را در محیط اندروید با استفاده از دکمه ی برگشت activityهمان طور که مستحضر هستید می توان یک
(back button) متد ،در این مورد .بستfinish () فراخوانی شده که در نتیجه برنامه ی مورد نظر را خاتمه می
،آغاز یا راه اندازی شده باشد startActivity (Intent)ای به وسیله ی متد activityدر صورتی که .دهد
.ای که هم اکنون بسته شده ندارد activityدیگر نیازی به بازخورد یا نتیجه از جانب ( caller)فراخوان
در آن صورت باید ،فراخوانی شود () startActivityForResultبا استفاده از متد activityاما چنانچه
متد ،به پایان می رسد sub-activityپس از این که .به کاربر ارسال گردد sub-activityبازخوردی از جانب
onActivityResult () در(sub-activity فراخوانی می شود )اکنون می توان بر اساس نتیجه دریافتی .مرتبط،
.الزم را انجام داد (actions)عملیات
این امر که در وهله ی اول کدام ،() startActivityForResultدر متد result codeمی توانید با تعریف یک
activity تعیین و شناسایی کنید ،را راه اندازی کردید. result code در حقیقت به شما بازگردانده می باال
قرار دهد که کاربر با استفاده از /تنظیم کند result codeراه اندازی شده نیز قادر است یک activity .شود
.مذکور لغو شده است یا خیر activityآن بتواند دریابد آیا
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
Sub-activity متدfinish () را بکار می برد تا بدین وسیلهintent جدیدی ایجاد کرده و داده های مورد نظر را
یک نتیجه قرار می دهد )اینکه setResult ()، sub-activityهمچنین با فراخوانی متد .داخل آن قرار دهد
.چه خواهد بود( activityنتیجه پس از اتمام
را نشان () startActivityForResultبا استفاده از متد intentنحوه ی فعال سازی و راه اندازی نمونه کد زیر
می دهد.
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
public void onClick(View view) {
Intent i = new Intent(this، ActivityTwo.class);
i.putExtra("Value1"، "This value one for ActivityTwo ");
i.putExtra("Value2"، "This value two ActivityTwo");
// set the request code to any code you like،
// you can identify the callback via this code
startActivityForResult(i، REQUEST_CODE);
}
sub-activityراه اندازی شده دیگر یک startActivityForResult ()، activityدر صورت استفاده از متد
.محسوب می گردد
intentقادر خواهد بود داده ها را از طریق (sub-activity)دیگر ،به پایان می رسد sub-activityپس از اینکه
.صورت می گیرد () finishکلیه ی این عملیات درون متد .برگرداند (caller)به فراخوان
@Override
public void finish() {
// Prepare data intent
Intent data = new Intent();
data.putExtra("returnKey1"، "Swinging on a star. ");
data.putExtra("returnKey2"، "You could be better then you are. ");
// Activity finished ok، return the data
setResult(RESULT_OK، data);
super.finish();
}
7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330
calling)فراخوان activityدر () onActivityResultمتد ،خاتمه می یابد sub-activityبمحض اینکه
activity )صدا زده می شود.
@Override
protected void onActivityResult(int requestCode، int resultCode، Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra("returnKey1")) {
Toast.makeText(this، data.getExtras().getString("returnKey1")،
Toast.LENGTH_SHORT).show();
}
}
}