در دو فصل قبلی راجع به Activity و چرخه زندگی آن صحبت کردیم و مثالی را هم پیاده سازی کردیم که یک اپلیکیشن پخش موسیقی ساده بود. حال که با Activity ها و چیستی آنها آشنا شدیم، نوبت به Intent ها می رسد. ما تا اینجا تنها یک اپلیکیشن داشتیم و یک Activity . اگر بخواهیم در یک اپلیکیشن دو تا اکتیویتی داشته باشیم، چگونه باید بین آنها رفت و آمد داشته باشیم؟ به تعبیر دیگر، اگر اپلیکیشن ما چند صفحه دارد، چجوری از یکی به دیگری منتفل شویم؟ اما آیا فقط جابجایی بین اکتیویتی های اپلیکیشن خودمان کافیست؟ رفتن به اکتویتی هایی از سایر اپ ها را چگونه مدیریت کنیم؟
در اینجا لازم است با مفهوم جدیدی به نام Intent آشنا شویم. اینتنت ها در اندروید دو دسته اند:
۱) Explicit صریح ۲) Implicit ضمنی
بگذارید با مثال هر دوی آنها را برایتان توضیح دهم. ابتدا اینتنت های صریح را بررسی میکنم. این نوع اینتنت ها دارای مقصد مشخص اند. یعنی نام مقصد بصورت صریج قید میشود. بعبارت دیگر اگر بخواهیم از MainActivity به SecondActivity برویم، چون نام جایی که میخواهیم برویم را میدانیم (یعنی SecondActivity ) پس به آن میگوییم صریح. به عنوان مثال میتوانید یک صفحه لاگین را تصور کنید. (همانند تصویر بالا) ابتدا در اکتیویتی اول هستیم و به کاربر یک EditText نشان میدهیم تا بتوانید نام کاربری خود را وارد کند و به محض کلیک بر روی دکمه (Button) ورود، به صفحه دوم بریم و محتوای مورد نظر را به او نمایش دهیم.مثال های دیگری را هم میتوان مثال زد.
اما در مقابل اینتنت های ضمنی را داریم که در آن نام مقصد به طور صریح قید نمی شود. و بیشتر در جاهایی کاربرد دارد که بخواهیم از اپ خودمان به اپ دیگری که کاربر نصب کرده، برویم و یک کاری را انجام دهیم. مثلا من میخواهم داخل اپلیکیشن آرشیو جوک و اس ام اسی که ساخته ام دکمه share داشته باشم. هرگاه کاربری روی آن کلیک کرد، بتواند آن متن را در یک اپ دیگر به اشتراک بگذارد. در اینجا نیازی به دانستن اسم اکتیویتی در اپلیکیشن مقصد (مثلا وایبر) نیست. چرا که اصلا شاید کاربر بخواهد آن متن را داخل تلگرام به اشتراک بگذارد. پس نام مقصد مهم نیست. اما عملی که باید انجام شد مهم است. به این “عمل” در اندروید Action میگویند. به قالبی که اطلاعات با آن باید ارسال شوند هم میگویند Urii (مثلا to:09123456789 یعنی شماره ای که باید با آن تماس گرفته شود ) فعلا جزییات مهم نیست. تنها مفهمو اینتنت را اگر متوجه شوید در پست بعدی آنها را کامل پیاده سازی میکنیم.)
خب برویم سراغ ادامه مثالی که داشتیم بررسی میکردیم.کاربر بر روی share کلیک کرد و حالا برای او پنجره ای باز می شود. اگر بخاطر بیاورید در تجربه کار بر روی اندروید، وقتی روی دکمه share در اپلیکیشنی کلیک میکنید، معمولا لیستی از اپ ها به شما نشان داده میشود که به درد کار شما میخورد و شمایید که انتخاب میکنید به کجا برود. به این جابجایی میگویند اینتنت ضمنی.
چند نمونه از Intent های ضمنی عبارتند از:
۱- رفتن به اپلیکیشن تماس اندروید و برقراری تماس
۲- رفتن به اپلیکیشن پیامک اندروید و ارسال یک پیامک
۳- به اشتراک گذاشتن یک عکس درون اپ خودمان در شبکه های اجتماعی ( مثل وایبر، اینستاگرام یا حتی ایمیل های یاهو و جیمیل)
۴- رفتن به اپ دوریبین اندروید و گرفتن یک عکس
۵ رفتن به گالری و انتخاب یک عکس . برگشتن ( مثل کاری اپلیکیشن های پیام رسان مثل وایبر برای انتخاب عکس پروفایل انجام میدهند)
و خیلی از کارهای دیگر…
اما این همه ماجرا نیست. در Intent های ضمنی ما گاهی نیاز داریم بعد از جابجایی بین اپ ها دوباره به اپ خودمان باز گردیم. مثلا با خود فکر کنید که دکمه ای داریم درون اپ خودمان با عنوان Take Picture. کاربر روی آن کلیک میکند . به اپ دوربین میرود و عکس را میگیرد. خب حالا عکس را گرفت. بعدش چی؟ در این جور مواقع ما نیاز داریم تا عکس گرفته شده را به اپ خودمان بازگردانیم تا عکس را درون اپ خودمان نمایش دهیم ( مثلا عکس را روی پروفایلش ست کنیم.) Intent های ضمنی این مدل رفت و آمد را هم پشتیانی میکنند.
برای شروع میتوانید، اسلاید هایی که در زیر لینک آن را برایتان قرار داده ام را مشاهده کنید. این اسلاید ها را در موسسه پارمیس مشهد برای دانشجویانم آماده کرده ام. شما نیز میتوانید از آنها استفاده لازم را ببرید. در قسمت بعدی، شروع میکنیم به کد زدن و Intent ها و مثال های مختلف آن را پیاده سازی میکنیم.
سلام خسته نباشید
وب سایتی هست که بتونه برنامه اندرویدی رو که ساختیم بهش بدیم و ورژن ios شو به ما بده
ممنون میشم پاسخ بدید
برنامه های اندروید به دو صورت تهیه میشوند. اگر به صورت Native یعنی با زبان جاوا نوشته شده باشند، این امکان وجود ندارد. اما اگر با Html/CSS/JAVASCRIPT برنامه مورد نظر نوشته شده است، امکان خروجی گرفتن برای ios وجود دارد.
مایکروسافت در نسخه آخر ویژوال استودیو چنین ابزاری را ارائه کرده است که فایل APK میگیرد و برنامه ویندوزفون و iOS تحویل میدهد. هنوز خودم تست نکردم. اگر تست کردید تجربه خود را با هم در میان بگذارید.
استاد ایشالا که همیشه سلامت باشین با این بیان شیواتون واقعا گره گشایی میکنین . تنت به تیغ طبیبان نیازمند مباد.
مشتاقانه مطالبتونو پیگیر هستیم و براتون دعا میکنیم
سلام تو رو خدا یه جواب بمن بدید یه ایمیل بزنید جواب و ممنون میشم .
من میخوام یه java و html بروی عکس کلیک کنم و بره اشتراک بشه عکس….
تو رو خدا جواب بدید…
سلام
برای منویی که معمولا در صفحه اول اپلیکیشن ها می باشد از چه روشی استفاده کنم ؟ (منوی اصلی)
آیا استفاده از base adapter روش مناسبی است یا نه؟ ممنون از راهنمایی های شما
این قاعده ساده را همیشه به یاد داشته باشید:
اگر اطلاعات ثابت نیستند (تعداد و نوع و مقدار آنها متفاوت است) باید از لیست استفاده کنید.
در غیر این صورت استفاده از آیتمهایی مثل Button و ImageButton بسیار سادهتر است.
سلام
فقط خواستم تشکر کنم و خداقوت بگم
برقرار باشید و پاینده
دوست عزیز ممنون بابت مطالب زیبا و جامعتون امید وارم این آموزش ها رو ادامه بدید.
دوست عزیز لینک اسلاد ها خراب شده است
لینک اسلایدها رو چک کردم و مشکل خاصی نداشتند. دوباره چک کنید.