
TextView עם הטקסט Welcome, ממורכז, בגודל 50sp, כדי לראות אותו מיד.BootCompletedReceiver שיורשת מ-BroadcastReceiver. ב-onReceive יוצרים Intent בשם mainActivityIntent (לא intent, כי הפרמטר כבר נקרא כך) עבור MainActivity.class.Intent.FLAG_ACTIVITY_NEW_TASK, כדי שהמערכת תפתח את ה-Activity כ-Task חדש שלא קשור ל-Task של ה-Receiver. אחר כך startActivity דרך ה-context. מציגים גם Toast עם boot completed.receiver עם intent-filter ו-action של BOOT_COMPLETED. הרישום אוטומטי ואין צורך לבטל אותו.uses-permission עם RECEIVE_BOOT_COMPLETED. פעולות מסוימות, למשל גישה לאנשי קשר, מצלמה, אינטרנט, וכאן גם ידיעה על סיום אתחול, דורשות הרשאה. בהתקנה אנדרואיד מודיעה למשתמש מה האפליקציה צריכה ואז הוא מחליט אם להתקין.הטקסט המלא של הדקות הראשונות בהרצאה «Boot Completed Receiver» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בדוגמה הזאת אנחנו הולכים לראות איך אנחנו יכולים להפעיל מיד את האפליקציה ברגע שהיוזר עושה ריסטארט למכשיר. לצורך כך אנחנו צריכים להירשם לברודקאסט רסיבר שיגיד לנו מתי היוזר סיים לעשות ריסטארט ואז כמובן להפעיל איזושהי אקטיביטי באפליקציה, לדוגמה את המיין אקטיביטי.
אז בואו נראה איך אפשר להשיג את זה. יש לנו פה את המיין אקטיביטי ובלייאוט פשוט נייצר איזשהו טקסט view, match parent נגדיר לאיזשהו טקסט welcome נגדיר לו gravity center שיהיה בדיוק באמצע ואיזשהו טקסט size גדול כזה שנוכל לראות אותו ישר 50 sp והנה יש לנו את המיין אקטיביטי.
הדבר הבא שאנחנו צריכים לעשות זה לבנות את מחלקת הברודקאסט רסיבר שלנו. אז בואו נייצר מחלקה חדשה ובואו נקרא לה boot Completed Receiver ואנחנו כמובן רוצים לרשת את Broadcast Receiver ואנחנו רוצים בפונקציית ה-OnCreate שתתבצע כאשר היוזר יסיים לעשות ריסטארט למכשיר אנחנו רוצים לבנות אובייקט מהמיין אקטיביטי אז הנה יש לנו כאן אינטנט
עבור המיין אקטיביטי בואו נקרא לו מיין אקטיביטי אינטנט שווה New Intent, ניתן את הקונטקסט הנוכחי שלנו וניתן את ה-Main Activity נקודה Class.
למה השם של ה-Intent זה Main Activity Intent ולא רק Intent? בגלל שהפונקציה כבר מקבלת אובייקט שנקרא Intent.
הדבר הבא שאנחנו רוצים לעשות זה להגדיר דגל עבור ה-Intent הזה שנקרא Intent, נקודה flag activity new task כדי שמבחינת המערכת המיין אקטיביטי תיפתח כטאסק חדשה ולא קשורה לטאסק של הברודקאסט רסיבר של המכשיר.
לאחר מכן דרך הקונטקסט נפעיל על ידי סטארט אקטיביטי את המיין אקטיביטי אינטנט. בואו בנוסף נציג גם איזשהו טוסט בכדי ממש לראות שהכל עובד כמו שצריך, הנה יש לנו פה את ה-context ונרשום בטוסט boot completed, נגדיר פה length long והנה סיימנו לבנות את אותה מחלקה שתתבצע אוטומטית, אותה פונקציה שתתבצע אוטומטית כאשר
היוזר יסיים לבצע ריסטארט. הדבר הבא שאנחנו צריכים לעשות זה לגשת ולרשום את המחלקה שבנינו. בואו נרשום אותה בשיטה של ה-Manifest שאוטומטית היא תהיה רשומה במערכת.
אין לנו גם צורך לבצע Unregister לדבר הזה. אז אנחנו רוצים בקובץ ה-Manifest להגדיר Receiver, הנה המחלקה שלנו, אנחנו רוצים להגדיר Intent Filter ובתוכו Action שיחפש לנו את ה-Boot Completed Event והנה בדיוק יש לנו פה Action כזה של Boot Completed.
עכשיו יש פעולות שאם אנחנו רוצים לבצע אותן במכשיר אנחנו חייבים לבקש הרשאה דרך האפליקציה לביצוע פעולות האלה. למה צריך לבצע הרשאה? כי לפעמים הפעולות האלה דורשות את האישור של המשתמש לפני שהוא מתקין את האפליקציה.
לדוגמה אפליקציה שנוגעת בטובות של היוזר, כלומר ברשימת ה-contacts, אפליקציה שעושה שימוש במצלמה, אפליקציה שניגשת לרשת האינטרנט, זה במקרה שלנו אפליקציה שרוצה לדעת מתי המכשיר סיים לבצע את הריסטארט, כלומר בוט קומפליטד.
אז אנחנו חייבים להגדיר שאנחנו משתמשים ביכולת הזאת על ידי פקודה שנקראת Uses Permission ולחפש פה את הפקודה הדרושה, במקרה הזה Receive Boot Completed.
עכשיו היוזר כאשר הוא מתקין את האפליקציה אז בזמן ההתקנה אנדרואיד אומרת לו בוא רגע רגע, לפני שאתה מתקין בוא תבין שהאפליקציה הספציפית הזאת דורשת לדעת מתי אתה עושה בוט, האם אתה בכלל רוצה להתקין את האפליקציה.
זה בעצם איזשהו שלב security כזה, כמו גילוי נאות שמגדיר ליוזר במה היכולות שאנחנו משתמשים. לא צריך את זה עבור כל יכולת, אבל יש רשימה של יכולות שאנחנו חייבים לבקש אישור בשביל להשתמש איתן, אחרת אנחנו בכלל לא יכולים להשתמש עם היכולות האלה.
לדעת מתי המכשיר סיים לבצע בוט בשביל לבצע פעולה מסוימת, זה דורש את האישור של הפרמישן.