
startActivity עם האינטנט המקורי, יוצרים אינטנט נוסף בעזרת Intent.createChooser. מעבירים לו את האינטנט המקורי וכותרת שתוצג בחלונית, למשל choose email app, וקוראים ל-startActivity עם האינטנט החדש (שנקרא appChooserIntent).Intent.createChooser(intent, title)הטקסט המלא של הדקות הראשונות בהרצאה «The App Chooser» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסרטון הקודם שלחנו אימייל בעזרת Implicit Intent וראינו שאם במכשיר יש מספר אפליקציות שמסוגלות לטפל באימפליסיט אינטנט הזה אז אנדרואיד פותחת לנו את החלונית הזאת שנקראת App Chooser ומאפשרת למשתמש לבחור איזה אפליקציה הוא רוצה שתטפל באינטנט הזה.
בואו נראה כמה נתונים בנוגע לחלונית הזאת ל-App Chooser. דבר ראשון, בואו נריץ את האפליקציה. הנה אנחנו רואים שהיא רצה על המכשיר האמיתי, הנה אנחנו רואים שהיא רצה על האמולטור.
כאשר לחצנו על האמולטור אז בעצם לא הייתה אפליקציה שמסוגלת לטפל בזה, אז קיבלנו את ההודעה הזאת, אבל במכשיר האמיתי מופיע לנו את ה-app chooser ויש כמה אפליקציות שמסוגלות לטפל בזה.
עכשיו, מה קורה אם היוזר לוחץ על always עבור אפליקציה מסוימת? אם הוא לוחץ על always זה אומר שמעכשיו והלאה הוא רוצה שהאפליקציה הזאת שהוא בחר במקרה הזה וג'ימייל תטפל באימפליסיט אינטנט הספציפי הזה ששלחנו כאן.
בואו נשלח את האימייל, האימייל נשלח ועכשיו בואו נלחץ עוד פעם, אנחנו רוצים לשלוח עוד אימייל ושימו לב שכבר לא קיבלנו את האפ צ'וזר מפני שהיוזר אמר די אני רוצה את האפליקציה הספציפית הזאת לא רוצה עוד אפליקציות אבל אנדרואיד כבר לא תציג את האפ צ'וזר וגם אם אנחנו נסגור את האפליקציה, היוזר כמובן יסגור אותה ויאתר אותה ויריץ
אותה שוב וילחץ, הוא לא יקבל יותר את האפ-צ'וזר, מפני שהוא אמר שהוא תמיד רוצה ספציפית את האפליקציה הזאת. אז קודם כל, דבר ראשון, היוזר יכול להחליט שהוא כן יחזיר את הדיפולט של האפ-צ'וזר.
איך היוזר יכול לעשות את זה? מה שהוא צריך לעשות, אם הוא כמובן יודע איך עושים את זה, ולגשת ל-settings, ב-settings לחפש את כל האפליקציות, לאתר את האפליקציה הספציפית שהוא ביקש שהיא תהיה הדפולטית, במקרה הזה זה gmail, להיכנס אליה וללחוץ על הלחצן clear defaults.
עכשיו אנחנו יכולים לסגור את ה-settings. בואו נאתר עוד פעם את האפליקציה שלנו, נריץ אותה, נלחץ על הלחצן, הנה האפ צ'וזר חזר לו.
אז קודם כל ליוזר תמיד יש אפשרות לעשות את זה. אבל אולי אנחנו רוצים להציג לו תמיד את האפ צ'וזר no matter what, מאיזושהי סיבה.
אם אנחנו תמיד רוצים להציג לו את האפ צ'וזר אפילו שהיוזר בוחר always, בואו נבחר כרגע always ונראה שהוא שולח אימייל והכל בסדר ואם הוא לוחץ עוד פעם על הלחצן הוא כבר לא מקבל את האפ צ'וזר ואנחנו עדיין בתור מפתחי אפליקציה יכולים להחליט בכל זאת להראות לו את האפ-צ'וזר.
איך עושים את זה? במקום לקרוא ל-to start activity אנחנו צריכים לבנות כאן עוד אינטנט, והאינטנט הזה בואו נקרא לו app-צ'וזר.
אנחנו רוצים לגשת ולבנות אינטנט מיוחד שיפעיל את האפ-צ'וזר. זה יהיה על ידי נקודה create chooser ואז אנחנו שולחים את האינטנט המקורי שלנו ושמקודם השתמשנו איתו בשביל להפעיל את האימפליסיט אינטנט, את האימפליסיט אקטיביטי ואנחנו יכולים לתת לו פה איזושהי כותרת שהוא יראה על ה-app chooser לדוגמה choose email app בצורה כזאת
וזו הכותרת שהוא יראה על חלונית ה-app chooser. לאחר מכן אנחנו רוצים to start activity אבל לא לשלוח את האינטנט המקורי אלא לשלוח את האפצ'וזר שלנו.
בואו בעצם נקרא לזה אפצ'וזר אינטנט, זה יהיה יותר הגיוני. דרך אגב אם אתם רוצים לעשות ריניימינג למשתנה פשוט לוחצים על שיפט F6 ורושמים איזה שם שאתם רוצים ואנדרואיד תעשה ריניימינג תוך כדי הכתיבה לכל המשתנים האלה.
בואו נבדוק את זה. נריץ, הנה אנחנו רצים על המכשיר האמיתי, הנה אנחנו רצים על האמולטור, ואנחנו, קודם כל בואו נבדוק באמולטור ונראה שקיבלנו את אותה התוצאה, אין אפליקציה שמסוגלת לטפל בזה, זה בסדר.
בואו ניגש למכשיר האמיתי ונלחץ על send email. ושימו לב שקיבלנו את האפ-צ'וזר שלנו,