PracticU

Send Email

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Send Email
מילון מושגים:
Intent - ב-Android, אובייקט הודעה שמבקש פעולה, למשל מעבר בין מסכים או הפעלת רכיב אחר.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.

Send Email
הדוגמה הראשונה ל-Implicit Intent: לחיצה על לחצן פותחת אפליקציית אימייל במכשיר, כשהנמענים, הנושא וגוף ההודעה כבר מולאו, והמשתמש רק צריך לשלוח.
בניית האינטנט
1. אינטנט ריק: יוצרים Intent בלי לציין Activity, כי איננו יודעים איזו אפליקציה במכשיר שולחת אימייל.
2. הגדרות נדרשות: את ההגדרות לא מנחשים אלא מחפשים בתיעוד של אנדרואיד או ב-Stack Overflow. כאן: Intent.ACTION_SEND ו-MIME type בשם message/rfc822, המתאר אימייל רגיל.
3. נמענים: Intent.EXTRA_EMAIL ל-To, ו-EXTRA_CC ל-Carbon Copy (עותק). שניהם חייבים להיות מערך מחרוזות ולא מחרוזת בודדת. EXTRA_BCC הוא Blind Carbon Copy, עותק שנמעני ה-To וה-CC לא יודעים עליו.
4. נושא וגוף: EXTRA_SUBJECT לנושא ו-EXTRA_TEXT לגוף ההודעה, וקוראים ל-startActivity.
מה קורה בפועל
יש שלושה מצבים: אפליקציה אחת מטפלת ומופעלת מיד, כמה אפליקציות והמערכת מציגה App Chooser, או שאין אף אחת והתוכנית קורסת. במכשיר האמיתי מוצג App Chooser, ו-Gmail נפתחת עם כל השדות ממולאים. באמולטור אין אפליקציה מתאימה והתוכנית קורסת.
טיפול במכשיר בלי אפליקציית אימייל
1. try-catch: עטיפה מונעת קריסה, והשגיאה הייתה no activity found to handle the intent.
2. למה זה לא מספיק: לא כדאי להציג למשתמש הודעת שגיאה של המערכת, גם מטעמי אבטחה, ו-try-catch עשוי לעטוף גם דברים אחרים.
3. בדיקה מראש: מקבלים PackageManager בעזרת getPackageManager() וקוראים ל-intent.resolveActivity(packageManager). אם התוצאה אינה null, קוראים ל-startActivity. אחרת מציגים הודעה ברורה, למשל no activity or app found to send email in your device.
אחרי הבדיקה האמולטור לא קורס אלא מציג את ההודעה, והמכשיר האמיתי ממשיך לעבוד.
כעת אפשר לשלוח אימייל בעזרת Implicit Intent ולטפל במכשיר שאין בו אפליקציה מתאימה.
השיעור הבא בקורס: The App Chooser

פרקי ההרצאה: Send Email

  1. 00:00

    שליחת אימייל עם Implicit Intent

  2. 01:52

    ACTION_SEND ו-MIME Type של אימייל

  3. 03:15

    כתובות הנמענים במערך מחרוזות

  4. 03:57

    שליחת עותק עם CC

  5. 04:58

    עותק נסתר עם BCC

  6. 05:57

    נושא וגוף ההודעה

  7. 07:23

    קריסה באמולטור בלי אפליקציית מייל

  8. 08:41

    App Chooser ושליחה דרך Gmail

תמלול ההרצאה: Send Email

הטקסט המלא של הדקות הראשונות בהרצאה «Send Email» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אז אחרי שהבנו מה זה implicit intent בואו נבצע כמה דוגמאות עם implicit intent. הדוגמה הראשונה שאנחנו הולכים לעשות זה פשוט לשלוח אימייל. מה שאנחנו רוצים לעשות זה בלחיצה על הלחצן לפתוח אפליקציה שמסוגלת לשלוח אימייל שאמורה להיות בתוך המכשיר אבל להגדיר לה כבר את כל ההגדרות הדרושות של האימייל שלנו לדוגמה הנושא,

  2. 00:32

    גוף ההודעה למי אנחנו רוצים לשלוח את האימייל, כך שהיוזר יוכל פשוט לראות את כל המידע הזה ומיידית לשלוח את האימייל. אולי אנחנו רוצים שהיוזר יוכל לשלוח אימייל מתוך האפליקציה שלנו, אז איך אנחנו עושים את זה?

  3. 00:47

    אז יש לנו פה את הלחצן, לוחצים עליו, מפעילים את קטע הקוד הזה, ומה שאנחנו צריכים לעשות זה לפתוח implicit intent שיחפש איזושהי אקטיביטי במכשיר שמסוגלת לשלוח אימייל.

  4. 01:03

    אז בואו נייצר אובייקט intent, האובייקט הזה כמובן הוא אובייקט ריק, אנחנו לא מגדירים לו אקטיביטי ספציפית כי אנחנו לא אמורים לדעת איזה אקטיביטי במכשיר מסוגלת לשלוח אימייל ואז אנחנו צריכים להגדיר את כל ההגדרות בשביל שהמערכת תחפש את האקטיביטי הספציפית שיודעת לשלוח אימייל.

  5. 01:26

    עכשיו מאיפה אנחנו יודעים אילו הגדרות אנחנו צריכים להגדיר עבור האימפליסיט אינטנט? אז זה באמת דבר שאנחנו לא אמורים לנחש ולא אמורים להמציא, אנחנו צריכים פשוט לעשות חיפוש או בדוקומנטציה של אנדרואיד או פשוט בג'ימייל לקבל איזושהי הפניה לסטאק אוברפלואו ולראות איך זה מתבצע ואז פשוט לנסות את הקוד הזה.

  6. 01:50

    אז אני כבר עשיתי את החיפושים האלה ואנחנו צריכים להגדיר לאינטנט את האקשן intent.action send שזה הגיוני כי אנחנו רוצים לשלוח אימייל ואנחנו צריכים להגדיר עבור האימפליסיט אינטנט מיים טייפ שנקרא message/rfc822 שזה מיים טייפ שמתאר אימייל רגיל.

  7. 02:22

    לאחר מכן אנחנו צריכים להגדיר עבור האינטנט אקסטראז. האקסטראז מיועדים עבור האקטיביטי ששולחת אימייל והם מכילים בדיוק את המידע שאנחנו רוצים לשלוח.

  8. 02:38

    לדוגמה, מה הנושא, לדוגמה, למי אנחנו רוצים לשלוח, לדוגמה, אולי אנחנו רוצים לשלוח אימייל עם קופי למישהו.

  9. 02:50

    אז בואו נראה את כל האופציות שאנחנו צריכים להגדיר. אז יש לנו כל מיני קבועים עבור האקסטראז לשליחת אימייל.

  10. 02:59

    יש לנו אקסטרה אימייל, שזה בעצם למי אנחנו רוצים, זה ה-to שלנו, אז בואו נגדיר לפני זה משתנים שיכניסו את הערכים לתוך ה-extra הזה האלה, שזה יהיה קצת יותר ברור לשימוש.

  11. 03:18

    ה-extra e-mail ולמי אתם רוצים, זה בעצם ה-to של ה-e-mail. to של ה-e-mail יכול להיות למספר אנשים ולכן זה חייב להיות מערך מחרוזות.

  12. 03:35

    אז בואו ניקח מערך מכרוזות ונגדיר שאנחנו רוצים לשלוח למוישה והוא נמצא בג'ימייל ואנחנו רוצים לשלוח לקיפי והוא נמצא ביהוא ובואו נסתפק בשני אלה.

  13. 03:51

    אז אנחנו צריכים להגדיר כאן את המערך, אנחנו לא יכולים להגדיר מכרוזת רגילה, זה חייב להיות מערך. עכשיו בואו נבצע משהו דומה עבור העותק cc. cc זה קיצור של carbon copy שזה נייר פחם נייר העתקה שמשמש להעתקה של מסמכים ישנים שהיה פעם ככה העתיקו מסמכים אז cc זה הקיצור של הcarbon

  14. 04:21

    copy וזה פשוט עותק של המייל למי אנחנו רוצים לשלוח את המייל ואנחנו רוצים לשלוח לאוגי ואוגי נמצא בgmail גם כן ואנחנו רוצים לשלוח ל-miss.piggy והיא גם ב-gmail ושני אלה הולכים לקבל עותק של האימייל.

  15. 04:43

    העותק נכנס ל-put extra של intent.extra.cc carbon copy ואנחנו כמובן רוצים להעביר לו את מערך המחרוזות של ה-cc. בואו, אם אנחנו כבר שולחים עותק, בואו נשלח bcc.

  16. 05:07

    זה בליינד קרבון קופי, זאת אומרת עותק שאנחנו שולחים למישהו או לכמה אנשים אבל כל החבר'ה האחרים של ה-to ושל ה-cc לא יודעים ששלחנו אליהם בגלל זה זה בליינד עיוור.

  17. 05:25

    אז אנחנו רוצים גם כן להגדיר איזשהו מערך ובואו ניקח את אריק את ג'ימל ובואו ניקח את בנץ והפעם בנץ נמצא ביהו. כמובן המצאתי את כל השמות האלה, נשכפל את זה, למאפה ושמות מרחוב סומסום שאתם כבר בטח מכירים.

  18. 05:49

    ואנחנו רוצים extra bcc, המצאתי את האימיילים האלה ליתר דיוק. אז הנה יש לנו את המערך של ה-bcc, ומה שעשינו פה זה הגדרנו את האקסטרות עבור האקטיביטי של היעד, למי אנחנו רוצים לשלוח את האימייל.

  19. 06:07

    עכשיו נשאר לנו רק להגדיר את הנושא, זה יהיה intent.putextra, הפעם זה יהיה intent.extraSubject ובואו ניתן איזשהו נושא טסטינג.

  20. 06:30

    לאחר מכן intent.putextra ואנחנו רוצים intent.extra, הפעם טקסט ואנחנו רוצים לנסות את האימייל Hello, this is a test email. וסיימנו עם כל האקסטרות, וכל האקסטרות האלה זה אקסטרות שהאקטיביטי שאנחנו הולכים לשלוח אליה את האינטנט מצפה לקבל.

  21. 07:06

    בואו רק נסגור כאן את המסולסלות שבטעות שכחתי, ואנחנו עכשיו רוצים פשוט to start activity in the intent. לא יודע איזה אקטיביטי הולכת להיווצר אבל יאללה אני רוצה לנסות את כל הסיפור הזה.

  22. 07:27

    יש לנו כאן גם את האמולטור וגם את המכשיר האמיתי ואני רוצה לראות איך זה מתנהג בשני המקרים. אז אני פשוט מריץ את זה והנה האפליקציה עולה על המכשיר האמיתי והנה האפליקציה עולה על האמולטור.

  23. 07:46

    אני רוצה קודם כל לבדוק את זה באמולטור. אני לוחץ על הלחצן והתוכנית קורסת. אוקיי, זה מעניין. עכשיו, כשראינו את כל העקרונות בנוגע לאינטנטס ולאימפליסיט אינטנט ולאינטנט פילטר וכולי, ראינו שברגע שאנחנו מנסים לשלוח אימפליסיט אינטנט, יכול להיות שלושה מצבים, יכולים להיות שלושה מצבים.

  24. 08:12

    או שיש אפליקציה אחת שיודעת לטפל בזה ואז היא מיד תופעל, או שיש מספר אפליקציות שיודעות לטפל בזה ואז אנדרואיד יציג לנו רשימה ליוזר איזה אפליקציה הוא רוצה שתטפל באימפליסיט אינטנט, או שאין אף אפליקציה שיכולה לטפל בזה ואז התוכנית קורסת וזה בדיוק מה שקרה כרגע באמולטור.

  25. 08:32

    בסדר, תכף נטפל בזה אבל בואו ניגש למכשיר האמיתי, נלחץ ואנחנו רואים שיש פה מספר אפליקציות שיודעות לטפל בזה ולכן אנדרואיד מציגה לנו חלון שנקרא App Chooser, הוא נעלם לי פה כרגע אבל כל מה שאני רוצה לעשות זה to send email, יש לי פה את gmail

  26. 08:56

    שכנראה היא גילתה שהשתמשנו בו לאחרונה ולכן היא שמה אותו פה ראשון, אבל יש פה עוד אפליקציות שמתחבאות כאן ואנחנו יכולים גם לבחור בהן.

  27. 09:07

    אז בואו נבחר ב-just once, ב-gmail, ושימו לב שאנדרואיד מיידית פותחת לנו את האפליקציה של gmail לשליחת האימייל שלנו, ושמה באפליקציה את כל האקסטרות ששלחנו.

  28. 09:24

    הנה ה-2, הנה ה-cc, הנה ה-bcc, הנה ה-subject, הנה הטקסט של ה-body וכל מה שאנחנו צריכים לעשות זה פשוט לשלוח ונגמר הסיפור. Sending message זה האפליקציה שג'ימיל אומרת והנה אנחנו רואים שכבר קיבלנו פה מאחורה איזושהי הודעה בנוגע למשהו שנשלח והכל בסדר.

  29. 09:49

    אנחנו רוצים רק לטפל במצב שבו יכול להיות מכשיר מסוים שאין לו אפליקציה שמסוגלת לשלוח אימייל.

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Intents

ההרצאה הבאה: The App Chooser

הרצאות קשורות מקורסים אחרים

  • שליחת email
  • שליחת דוח ב-EMAIL בסיום ההתקנה

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון