آموزش کار با Intent در اندروید استودیو

آموزش‌ حرفه‌ای کار با  Intent  در اندروید استودیو

از پرکاربرد ترین و پرتکرارترین مفاهیم برنامه نویسی اندروید مفهوم Intent  ها هستند که تقریبا در بسیاری از پروژه هایی که انجام می دهیم استفاده می شود.

Intent  چیست؟ و چه کاربردی دارد؟

معنوی لغوی واژه intent : قصد و نیت انجام کار است که ارتباط تنگاتنگی با کاری که در برنامه نویسی انجام می دهد دارد به طوری که از وظایفش این است که به سیستم عامل بگوید قصد انجام چه کاری را داریم در واقع واسطی ست میان ما و سیستم عامل و می توانیم بین کامپوننت یک برنامه با کامپوننت برنامه دیگر ارتباط برقرار کرده و اطلاعات را رد و بدل کنیم.

این کار به این صورت انجام می شود که سرویس ها و اکتیویتی ها را اجرا می کنیم و اطلاعات و داده ها را از یک اکتیویتی به اکتیویتی دیگر میبریم.
به طور خلاصه Intent ها حاوی یک سری پیام هایی هستند که به وسیله ی آن ها از سیستم تقاضای انجام کاری را می کنیم در واقع در نقش پستچی اندروید و برای داخل سیستم هستند.

چند مثال از کاربرد Intent در اپلیکیشن ها:
باز کردن آیدی در تلگرام
باز کردن کال پد در یک نرم افزار
کانکت شدن به اکانت ایمیل در یک نرم افزار
شما می توانید داده های اضافی را مستقیما از طریق نسخه های overload شده ی متد putExtra() از آبجکت های Intent، (نمونه ای از کلاس) Bundle قرار دهید.
داده های اضافی در قالب جفت های کلید/مقدار هستند. کلید همیشه از نوع String است و مقادیر آن را می توانید از نوع داده ای اولیه int، float یا آبجکت های از نوع String، Bundle، Parceable و Serializable تنظیم نمایید.
کامپوننت دریافت کننده می تواند به این اطلاعات از طریق توابع getAction() و getData() آبجکت Intent دسترسی داشته باشد. خود آبجکت Intent را نیز می توان از طریق متد getIntent() بازیابی نمود.
کامپوننتی که دریافت کننده ی این intent است، می تواند با فراخوانی getIntent() .getExtras() به داده های اضافی دسترسی داشته باشد.

این عملیات در تکه کد زیر به نمایش گذاشته شده است.

 

Bundle extras = getIntent().getExtras();if (extras == null) {return;}// get data via the keyString value1 = extras.getString(Intent.EXTRA_TEXT);if (value1 != null) {// do something with the data}

نمونه استفاده از intent جهت به اشتراک گذاری اطلاعات :
اغلب اپلیکیشن های اندروید این امکان به اشتراک گذاشتن عکس ، فیلم و … را به شما می دهند در واقع می توانید داده های مورد نظر را از طریق آبجکت Intent به یکی از این کامپوننت ها ارسال کنید.

تکه کد زیر روش استفاده از intent جهت به اشتراک گذاری اطلاعات را نمایش می دهد:

 

// this runs, for example, after a button clickIntent intent = new Intent(Intent.ACTION_SEND);intent.setType(“text/plain”);intent.putExtra(android.content.Intent.EXTRA_TEXT, “News for you!”);startActivity(intent);

آموزش بازیابی اطلاعات از یک subactivity
یک activity را می توانید با اعمال دکمه ی بازگشت در نمایشگر گوشی خود پایان دهید. با فشردن این دکمه، متد (finish) فراخوانی می شود.

چنانچه activity مورد نظر با صدا خوردن متد startActivity(Intent) اجرا شده باشد، در آن صورت فراخواننده انتظار بازگشت هیچ نتیجه یا بازخوردی از activity مزبور را ندارد.

اگر activity را با فراخوانی متد (startActivityForResult) راه اندازی کرده باشید، در آن صورت subactivity طبق انتظار، نتیجه ای را برمی گرداند. با پایان یافتن subactivity، متد onActivityResultدر subactivity فرخوانده می شود و شما می توانید عملیاتی را با توجه به نتیجه بازگشتی انجام دهید.

در فراخوانی متد (startActivityForResult) شما می توانید کدی (resultcode) جهت شناسایی activity راه اندازی شده تعریف نمایید. این کد به شما بازگردانده می شود.

activity فراخوانده شده نیز می تواند کدی داشته باشد که فراخواننده به کمک آن می تواند تشخیص دهد آیا activity لغو شده یا خیر.

Sub-activity با استفاده از (finish) یک intent جدید ایجاد کرده و داده ها را در آن می ریزد. سپس به واسطه ی فراخوانی متد (setResult) نتیجه را تنظیم می کند.
نمونه کد زیر نشان می دهد چگونه با اجرای متد (startActivityForResult) (و ارسال کلاس ایجاد شده از intent به عنوان آرگومان به این متد)، یک intent را فعال و به اصطلاح trigger نمایید

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 codestartActivityForResult(i, REQUEST_CODE);}

زمانی که متد (startActivityForResult) را صدا می زنید، activity راه اندازی شده sub-activit خوانده می شود.
هنگامی که subactivity بسته می شود، به دنبالش داده ها را از طریق آبجکت intent به فراخواننده ی خود ارسال می کند. این عملیات داخل بدنه ی (finish) پیاده سازی می شود.

// Prepare data intentIntent 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 datasetResult(RESULT_OK, data);super.finish();}

با بسته شدن یا به پایان رسیدن subactivity، متد( onActivityResult) در سطح کلاس activity فراخواننده صدا خورده می شود.

@Overrideprotected 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();}}}

 

مطلب مفیدی برای شما بود ؟ پس به اشتراک بگذارید برای دوستانتان

codesrcReza

109 مطلب منتشر شده

درباره این مطلب نظر دهید !