PracticU

Receive Implicit Intent

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

Receive Implicit Intent
עד עכשיו הפעלנו אקטיביטי של אפליקציות אחרות. כאן עושים את ההפך: בונים אפליקציה עם Activity שאפליקציות אחרות יוכלו לפתוח בעזרת Implicit Intent. הדוגמה היא TextPad, אפליקציה שמציגה טקסט שנשלח אליה.
השלבים העיקריים
1. מסך ראשי: ב-main activity יש רק TextView עם הכיתוב TextPad, וזו לא האקטיביטי שבה אפליקציות אחרות ישתמשו.
2. אקטיביטי להצגת טקסט: מוסיפים Empty Activity בשם TextPadActivity עם FrameLayout (padding 16 ורקע אדום כהה). בתוכו ScrollView ו-TextView עם הזיהוי textViewData, צבע טקסט לבן וגודל 25sp. הטקסט עצמו לא נקבע ב-XML.
3. קוד ה-Java: ב-onCreate מקבלים את ה-Intent בעזרת getIntent(), שולפים getStringExtra בשם text to present ושמים ב-TextView בעזרת setText. מי שרוצה להפעיל את האקטיביטי חייב לספק את ה-extra הזה, ולכן צריך לפרסם זאת במסמכי האפליקציה.
4. Intent Filter במניפסט: בתגית של TextPadActivity (ולא של המסך הראשי) מגדירים את שלושת הקריטריונים: Category מסוג DEFAULT, Action מסוג VIEW, ו-Data עם MIME type בשם text/plain, כלומר טקסט רגיל ולא וידאו, אודיו או תמונות.
5. אפליקציה שמפעילה: יוצרים אפליקציה חדשה בשם Present Text, עם package name שונה (אחרת אי אפשר להריץ את שתיהן על אותו מכשיר). בלחיצה על לחצן Show some text יוצרים Intent, מוסיפים addCategory(Intent.CATEGORY_DEFAULT), setAction(Intent.ACTION_VIEW), setType("text/plain") ו-putExtra("text to present", "Hello, this is a sample text").
6. בדיקה והפעלה: בודקים עם resolveActivity ואז startActivity, ואחרת מציגים Toast.
7. בדיקה: באמולטור הלחיצה פתחה מיד את TextPad גם כשהיא הייתה סגורה. במכשיר האמיתי הופיע App Chooser שכלל גם אפליקציית WPS Office וגם את שלנו, ובחירה בשלנו הציגה את הטקסט.
שימו לב
המשתמש באקטיביטי שלנו חייב לספק בדיוק את שלושת הקריטריונים של ה-Intent Filter וגם את ה-extra הנדרש.
אחרי השיעור אפשר לבנות אקטיביטי שמגיבה ל-Implicit Intent מאפליקציות אחרות.

פרקי ההרצאה: Receive Implicit Intent

  1. 00:00

    אפליקציה שמקבלת Implicit Intent

  2. 00:59

    מסך הפתיחה של TextPad

  3. 01:58

    הוספת TextPadActivity

  4. 02:57

    עיצוב המסך עם ScrollView

  5. 04:21

    קריאת הטקסט מה-Intent בקוד Java

  6. 06:20

    הגדרת Intent Filter במניפסט

  7. 07:33

    Category, Action ו-MIME Type

  8. 08:48

    הרצה והכנה לאפליקציה שנייה

תמלול ההרצאה: Receive Implicit Intent

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

  1. 00:02

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

  2. 00:27

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

  3. 00:49

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

  4. 01:10

    אז בואו נבנה את זה. יש לנו את האפליקציה, כרגע אין בה כלום. יש לנו Main Activity וב-Main Activity נציג טקסט View, ניקח Match Parent ונגדיר כאן איזשהו Gravity Center שהטקסט יהיה באמצע, נגדיר טקסט סייז 20 SP, נגדיר טקסט טקסט פאד, נרד פה איזה שתי שורות The Ultimate Text Viewer.

  5. 01:53

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

  6. 02:15

    אז בואו נוסיף את האקטיביטי הזאת. הנה יש לנו את האפ, מכה שימני, New, Activity, ואנחנו בוחרים ב- Empty Activity.

  7. 02:27

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

  8. 02:47

    בואו נבצע פיניש, הנה יש לנו את ה-tivity והנה יש לנו את ה-linear layout שלה שאנחנו רוצים כאן, בעצם בואו ניקח frame layout, זה יהיה קצת יותר הגיוני להצגת טקסט, ניפטר פה מכל מה שאנחנו לא צריכים, נגדיר פה padding 16,

  9. 03:12

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

  10. 03:34

    נגדיר לטקסט view scroll bars בצורה ורטיקלית. הנה יש לנו פה את הטקסט view שיציג את הטקסט של היוזר. בואו נגדיר כאן ID, טקסט view data ונגדיר טקסט color לבן כדי שיראה טוב על הרקע של האדום ובואו נגדיר טקסט size 25 sp והנה ארגנו לעצמנו איזושהי אקטיביטי

  11. 04:11

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

  12. 04:28

    הדבר הבא שאנחנו רוצים לבצע זה לבנות את הקוד של ה-Java של ה-TextPad. בקוד ה-Java אנחנו רוצים לאתר את ה-TextView שבנינו, בואו ניקח private text view, קראנו לו text view data, אנחנו מעוניינים לאתר אותו ולהכניס אליו את המידע ששולחים אלינו.

  13. 04:54

    הנה יש לנו text view, mind view by ID והנה איתרנו אותו. כעת ב-onCreate אנחנו רוצים ליצור אובייקט intent, intent שווה getIntent, זה הנקודה שאנחנו רוצים, כי אנחנו רוצים לקבל את ה-intent שהפעיל אותנו כ-activity, להוציא ממנו איזושהי מחרוזת, בואו נקרא לה text to present,

  14. 05:29

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

  15. 05:49

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

  16. 06:06

    ואז הוא שולח לנו ואנחנו יכולים פשוט לבנות ל-text view data ו-to set text, text to present. והנה סיימנו לבנות את קוד ה-Java של ה-activity שנקראת text-pad activity.

  17. 06:25

    הדבר הבא שאנחנו צריכים לעשות זה להגדיר מהם הגדרות ה-implicit intent שצריכים לכתוב בשביל להפעיל את ה-activity. זה מתבצע בקובץ ה-manifest בתגית של ה-activity.

  18. 06:42

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

  19. 07:02

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

  20. 07:22

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

  21. 07:47

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

  22. 08:14

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

  23. 08:28

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

  24. 08:55

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

  25. 09:14

    כאן אין משהו שמפעיל את ה-activity של ה-text-pad activity, כי זה לא מיועד להפעלה מהאפליקציה הזאת, במקרה הזה, בדוגמה שלנו.

  26. 09:26

    מה שאנחנו רוצים לעשות זה להפעיל את ה-text-pad אקטיביטי מאפליקציה אחרת על ידי implicit intent. לצורך כך אנחנו צריכים אפליקציה אחרת.

  27. 09:38

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

  28. 09:59

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

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

ההרצאה הקודמת: Open Calendar

ההרצאה הבאה: Understanding Broadcast Receiver

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

  • Implicit Casting

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

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