
Intent בלי לציין Activity, כי איננו יודעים איזו אפליקציה במכשיר שולחת אימייל.Intent.ACTION_SEND ו-MIME type בשם message/rfc822, המתאר אימייל רגיל.Intent.EXTRA_EMAIL ל-To, ו-EXTRA_CC ל-Carbon Copy (עותק). שניהם חייבים להיות מערך מחרוזות ולא מחרוזת בודדת. EXTRA_BCC הוא Blind Carbon Copy, עותק שנמעני ה-To וה-CC לא יודעים עליו.EXTRA_SUBJECT לנושא ו-EXTRA_TEXT לגוף ההודעה, וקוראים ל-startActivity.no activity found to handle the intent.try-catch עשוי לעטוף גם דברים אחרים.PackageManager בעזרת getPackageManager() וקוראים ל-intent.resolveActivity(packageManager). אם התוצאה אינה null, קוראים ל-startActivity. אחרת מציגים הודעה ברורה, למשל no activity or app found to send email in your device.הטקסט המלא של הדקות הראשונות בהרצאה «Send Email» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שהבנו מה זה implicit intent בואו נבצע כמה דוגמאות עם implicit intent. הדוגמה הראשונה שאנחנו הולכים לעשות זה פשוט לשלוח אימייל. מה שאנחנו רוצים לעשות זה בלחיצה על הלחצן לפתוח אפליקציה שמסוגלת לשלוח אימייל שאמורה להיות בתוך המכשיר אבל להגדיר לה כבר את כל ההגדרות הדרושות של האימייל שלנו לדוגמה הנושא,
גוף ההודעה למי אנחנו רוצים לשלוח את האימייל, כך שהיוזר יוכל פשוט לראות את כל המידע הזה ומיידית לשלוח את האימייל. אולי אנחנו רוצים שהיוזר יוכל לשלוח אימייל מתוך האפליקציה שלנו, אז איך אנחנו עושים את זה?
אז יש לנו פה את הלחצן, לוחצים עליו, מפעילים את קטע הקוד הזה, ומה שאנחנו צריכים לעשות זה לפתוח implicit intent שיחפש איזושהי אקטיביטי במכשיר שמסוגלת לשלוח אימייל.
אז בואו נייצר אובייקט intent, האובייקט הזה כמובן הוא אובייקט ריק, אנחנו לא מגדירים לו אקטיביטי ספציפית כי אנחנו לא אמורים לדעת איזה אקטיביטי במכשיר מסוגלת לשלוח אימייל ואז אנחנו צריכים להגדיר את כל ההגדרות בשביל שהמערכת תחפש את האקטיביטי הספציפית שיודעת לשלוח אימייל.
עכשיו מאיפה אנחנו יודעים אילו הגדרות אנחנו צריכים להגדיר עבור האימפליסיט אינטנט? אז זה באמת דבר שאנחנו לא אמורים לנחש ולא אמורים להמציא, אנחנו צריכים פשוט לעשות חיפוש או בדוקומנטציה של אנדרואיד או פשוט בג'ימייל לקבל איזושהי הפניה לסטאק אוברפלואו ולראות איך זה מתבצע ואז פשוט לנסות את הקוד הזה.
אז אני כבר עשיתי את החיפושים האלה ואנחנו צריכים להגדיר לאינטנט את האקשן intent.action send שזה הגיוני כי אנחנו רוצים לשלוח אימייל ואנחנו צריכים להגדיר עבור האימפליסיט אינטנט מיים טייפ שנקרא message/rfc822 שזה מיים טייפ שמתאר אימייל רגיל.
לאחר מכן אנחנו צריכים להגדיר עבור האינטנט אקסטראז. האקסטראז מיועדים עבור האקטיביטי ששולחת אימייל והם מכילים בדיוק את המידע שאנחנו רוצים לשלוח.
לדוגמה, מה הנושא, לדוגמה, למי אנחנו רוצים לשלוח, לדוגמה, אולי אנחנו רוצים לשלוח אימייל עם קופי למישהו.
אז בואו נראה את כל האופציות שאנחנו צריכים להגדיר. אז יש לנו כל מיני קבועים עבור האקסטראז לשליחת אימייל.
יש לנו אקסטרה אימייל, שזה בעצם למי אנחנו רוצים, זה ה-to שלנו, אז בואו נגדיר לפני זה משתנים שיכניסו את הערכים לתוך ה-extra הזה האלה, שזה יהיה קצת יותר ברור לשימוש.
ה-extra e-mail ולמי אתם רוצים, זה בעצם ה-to של ה-e-mail. to של ה-e-mail יכול להיות למספר אנשים ולכן זה חייב להיות מערך מחרוזות.
אז בואו ניקח מערך מכרוזות ונגדיר שאנחנו רוצים לשלוח למוישה והוא נמצא בג'ימייל ואנחנו רוצים לשלוח לקיפי והוא נמצא ביהוא ובואו נסתפק בשני אלה.
אז אנחנו צריכים להגדיר כאן את המערך, אנחנו לא יכולים להגדיר מכרוזת רגילה, זה חייב להיות מערך. עכשיו בואו נבצע משהו דומה עבור העותק cc. cc זה קיצור של carbon copy שזה נייר פחם נייר העתקה שמשמש להעתקה של מסמכים ישנים שהיה פעם ככה העתיקו מסמכים אז cc זה הקיצור של הcarbon
copy וזה פשוט עותק של המייל למי אנחנו רוצים לשלוח את המייל ואנחנו רוצים לשלוח לאוגי ואוגי נמצא בgmail גם כן ואנחנו רוצים לשלוח ל-miss.piggy והיא גם ב-gmail ושני אלה הולכים לקבל עותק של האימייל.
העותק נכנס ל-put extra של intent.extra.cc carbon copy ואנחנו כמובן רוצים להעביר לו את מערך המחרוזות של ה-cc. בואו, אם אנחנו כבר שולחים עותק, בואו נשלח bcc.
זה בליינד קרבון קופי, זאת אומרת עותק שאנחנו שולחים למישהו או לכמה אנשים אבל כל החבר'ה האחרים של ה-to ושל ה-cc לא יודעים ששלחנו אליהם בגלל זה זה בליינד עיוור.
אז אנחנו רוצים גם כן להגדיר איזשהו מערך ובואו ניקח את אריק את ג'ימל ובואו ניקח את בנץ והפעם בנץ נמצא ביהו. כמובן המצאתי את כל השמות האלה, נשכפל את זה, למאפה ושמות מרחוב סומסום שאתם כבר בטח מכירים.
ואנחנו רוצים extra bcc, המצאתי את האימיילים האלה ליתר דיוק. אז הנה יש לנו את המערך של ה-bcc, ומה שעשינו פה זה הגדרנו את האקסטרות עבור האקטיביטי של היעד, למי אנחנו רוצים לשלוח את האימייל.
עכשיו נשאר לנו רק להגדיר את הנושא, זה יהיה intent.putextra, הפעם זה יהיה intent.extraSubject ובואו ניתן איזשהו נושא טסטינג.
לאחר מכן intent.putextra ואנחנו רוצים intent.extra, הפעם טקסט ואנחנו רוצים לנסות את האימייל Hello, this is a test email. וסיימנו עם כל האקסטרות, וכל האקסטרות האלה זה אקסטרות שהאקטיביטי שאנחנו הולכים לשלוח אליה את האינטנט מצפה לקבל.
בואו רק נסגור כאן את המסולסלות שבטעות שכחתי, ואנחנו עכשיו רוצים פשוט to start activity in the intent. לא יודע איזה אקטיביטי הולכת להיווצר אבל יאללה אני רוצה לנסות את כל הסיפור הזה.
יש לנו כאן גם את האמולטור וגם את המכשיר האמיתי ואני רוצה לראות איך זה מתנהג בשני המקרים. אז אני פשוט מריץ את זה והנה האפליקציה עולה על המכשיר האמיתי והנה האפליקציה עולה על האמולטור.
אני רוצה קודם כל לבדוק את זה באמולטור. אני לוחץ על הלחצן והתוכנית קורסת. אוקיי, זה מעניין. עכשיו, כשראינו את כל העקרונות בנוגע לאינטנטס ולאימפליסיט אינטנט ולאינטנט פילטר וכולי, ראינו שברגע שאנחנו מנסים לשלוח אימפליסיט אינטנט, יכול להיות שלושה מצבים, יכולים להיות שלושה מצבים.
או שיש אפליקציה אחת שיודעת לטפל בזה ואז היא מיד תופעל, או שיש מספר אפליקציות שיודעות לטפל בזה ואז אנדרואיד יציג לנו רשימה ליוזר איזה אפליקציה הוא רוצה שתטפל באימפליסיט אינטנט, או שאין אף אפליקציה שיכולה לטפל בזה ואז התוכנית קורסת וזה בדיוק מה שקרה כרגע באמולטור.
בסדר, תכף נטפל בזה אבל בואו ניגש למכשיר האמיתי, נלחץ ואנחנו רואים שיש פה מספר אפליקציות שיודעות לטפל בזה ולכן אנדרואיד מציגה לנו חלון שנקרא App Chooser, הוא נעלם לי פה כרגע אבל כל מה שאני רוצה לעשות זה to send email, יש לי פה את gmail
שכנראה היא גילתה שהשתמשנו בו לאחרונה ולכן היא שמה אותו פה ראשון, אבל יש פה עוד אפליקציות שמתחבאות כאן ואנחנו יכולים גם לבחור בהן.
אז בואו נבחר ב-just once, ב-gmail, ושימו לב שאנדרואיד מיידית פותחת לנו את האפליקציה של gmail לשליחת האימייל שלנו, ושמה באפליקציה את כל האקסטרות ששלחנו.
הנה ה-2, הנה ה-cc, הנה ה-bcc, הנה ה-subject, הנה הטקסט של ה-body וכל מה שאנחנו צריכים לעשות זה פשוט לשלוח ונגמר הסיפור. Sending message זה האפליקציה שג'ימיל אומרת והנה אנחנו רואים שכבר קיבלנו פה מאחורה איזושהי הודעה בנוגע למשהו שנשלח והכל בסדר.
אנחנו רוצים רק לטפל במצב שבו יכול להיות מכשיר מסוים שאין לו אפליקציה שמסוגלת לשלוח אימייל.