PracticU

Airplane Mode Receiver - Register via Manifest

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Airplane Mode Receiver - Register via Manifest
מילון מושגים:
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.
Intent - ב-Android, אובייקט הודעה שמבקש פעולה, למשל מעבר בין מסכים או הפעלת רכיב אחר.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.

Airplane Mode Receiver - Register via Manifest
יש דרך שנייה לרשום Broadcast Receiver: דרך קובץ המניפסט במקום מהקוד. השיעור ממשיך מדוגמת מצב טיסה ומראה איך הרישום במניפסט משנה את ההתנהגות.
איך עושים את זה
1. תגית receiver במניפסט: בתוך תגית ה-application מוסיפים תגית receiver עם name של המחלקה (Android Studio מציעה את AirplaneModeReceiver אוטומטית). בתוכה intent-filter עם action של Airplane Mode. זה כבר הרישום.
2. הרישום אוטומטי: מרגע זה האפליקציה רשומה כברירת מחדל, ולכן משנים את הלחצנים: Register כבוי (enabled שווה false) ו-Unregister פעיל.
3. ביטול ורישום מחדש בקוד: מוחקים את הקוד הקודם של registerReceiver. יוצרים ComponentName של AirplaneModeReceiver.class, שמתאר את התגית במניפסט, ומקבלים PackageManager.
4. הפעלה: קוראים ל-setComponentEnabledSetting עם ה-ComponentName, עם COMPONENT_ENABLED_STATE_ENABLED ועם DONT_KILL_APP, כדי שהאפליקציה לא תיהרג בשינוי המניפסט.
5. כיבוי: באותו אופן בלחצן Unregister, עם COMPONENT_ENABLED_STATE_DISABLED.
6. בדיקה: מיד בהפעלה מתקבלים דיווחים על שינוי מצב טיסה. אחרי Unregister אין דיווחים, ואחרי Register הם חוזרים.
פקודות והגדרות
- new ComponentName(context, AirplaneModeReceiver.class)
- packageManager.setComponentEnabledSetting(componentName, state, PackageManager.DONT_KILL_APP)
אחרי השיעור אפשר לרשום Receiver במניפסט ולהפעיל או לכבות אותו מהקוד.
השיעור הבא בקורס: Boot Completed Receiver

פרקי ההרצאה: Airplane Mode Receiver - Register via Manifest

  1. 00:00

    רישום Receiver דרך המניפסט

  2. 00:37

    תגית receiver ו-Intent Filter

  3. 01:13

    רשומים כבר כברירת מחדל

  4. 01:54

    שינוי הרישום מקוד Java

  5. 02:34

    ComponentName ו-PackageManager

  6. 03:12

    הפעלה וכיבוי עם setComponentEnabledSetting

תמלול ההרצאה: Airplane Mode Receiver - Register via Manifest

הטקסט המלא של הדקות הראשונות בהרצאה «Airplane Mode Receiver - Register via Manifest» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

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

  2. 00:25

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

  3. 00:39

    היא כבר יודעת שזה הרסיבר היחיד שיש לנו בכל האפליקציה. מה שאנחנו צריכים לעשות זה לבנות את התגית של הרסיבר הזה עם ה-Name של השם של המחלקה שלנו, ואז לבנות את ה-Intent Filter בתוך התגית הזאת, ולהגדיר עבורו את ה-Action, ולחפש איירפליין והנה אנחנו רואים שיש לנו כבר איירפליין מוד וזה בעצם הרישום.

  4. 01:07

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

  5. 01:32

    אז אם אנחנו מקסימום רוצים לעשות זה Unregister ו-Register מחדש. איך אנחנו אבל עושים Unregister ו-Register ל-Receiver שנרשם ב-Manifest?

  6. 01:46

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

  7. 02:02

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

  8. 02:29

    אז בואו נגדיר new component name ונקבל את airplane-receiver.class ואוטומטית המערכת תמצא את התגית המתאימה מקובץ המניפסט. אנחנו רוצים את ה-package-manager שעשינו איתו שימוש בסרטונים קודמים, package-manager שווה get-package-manager והוא נותן לנו מידע על אפליקציות שנמצאות במחשב.

  9. 03:00

    לאחר מכן אנחנו רוצים package-manager.set-component-enabled- settings ולתת את ה-component-name את ה-package-manager.component-enabled-state- enabled וזה בעצם מאפשר לנו להגדיר שה-component שנמצא במניפסט שאחראי על ה-AirplaneModeReceiver

  10. 03:31

    כרגע הוא enabled. אנחנו צריכים לתת עוד איזה קבוע אחד שנקרא package-manager.don't-kill שב-by-default הוא לא יהרוג את האפליקציה כשאנחנו עושים איזשהו שינוי במניפסט.

  11. 03:50

    לאחר מכן אנחנו יכולים את כל השורות האלה

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

ההרצאה הקודמת: Airplane Mode Receiver - Register via Code

ההרצאה הבאה: Boot Completed Receiver

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

  • קובץ Manifest
  • Swarm - Global Mode
  • אוגרים במעבד - Stack & Register
  • דיבאג בג'אווה - Debug Mode

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

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