<Receiver>

תחביר:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
מוכל ב:
<application>
יכולים לכלול:
<intent-filter>
<meta-data>
<property>
תיאור:
מצהיר על מקלט שידורים, BroadcastReceiver מחלקה משנית, כאחד מרכיבי האפליקציה. מקלט שידורים מאפשר לאפליקציות לקבל כוונות שמשודרות על ידי המערכת או על ידי אפליקציות אחרות, גם כשלא מופעלים רכיבים אחרים של האפליקציה.

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

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

אם הרכיב הזה מטפל בשידורים שאינם שידורי מערכת, צריך לציין ערך ל-android:exported. מגדירים את הערך הזה ל-"true" אם רוצים שהמקלט יוכל לקבל שידורים מאפליקציות אחרות, או ל-"false" אם רוצים שהמקלט יוכל לקבל שידורים רק מהאפליקציה שלכם.

אם כבר הצהרתם על מאפיין android:permission, אתם לא צריכים להסיר אותו.

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

מאפיינים:
android:directBootAware

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

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

ערך ברירת המחדל הוא "false".

android:enabled
האם המערכת יכולה ליצור מופע של מקלט השידור. אם אפשר, כותבים "true". אם אי אפשר, כותבים "false". ערך ברירת המחדל הוא "true".

לרכיב <application> יש מאפיין enabled משלו שחל על כל רכיבי האפליקציה, כולל מקלטי שידורים. כדי להפעיל את מקלט השידור, הערכים של המאפיינים <application> ו-<receiver> צריכים להיות "true". אם אחת מהן היא "false", היא מושבתת ואי אפשר ליצור ממנה מופע.

android:exported
האם מקלט השידור יכול לקבל הודעות ממקורות שאינם מערכתיים מחוץ לאפליקציה. אם אפשר, כותבים "true". אם אי אפשר, כותבים "false". אם "false", ההודעות היחידות שמקלט השידורים מקבל הן אלה שנשלחות על ידי המערכת, רכיבים של אותה אפליקציה או אפליקציות עם אותו מזהה משתמש.

אם לא מציינים ערך, ערך ברירת המחדל תלוי בשאלה אם מקלט השידור מכיל מסנני כוונות. אם הרכיב מכיל לפחות מסנן Intent אחד, ערך ברירת המחדל הוא "true". אחרת, ערך ברירת המחדל הוא "false".

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

android:icon
סמל שמייצג את מקלט השידורים. המאפיין הזה מוגדר כהפניה למשאב שאפשר לצייר שמכיל את הגדרת התמונה. אם לא מוגדר סמל, המערכת משתמשת בסמל שצוין לאפליקציה כולה. אפשר לעיין במאפיין icon של רכיב <application>.

הסמל של מקלט השידור, בין אם הוא מוגדר כאן או על ידי האלמנט <application>, הוא גם סמל ברירת המחדל לכל מסנני הכוונות של המקלט. אפשר לעיין במאפיין icon של רכיב <intent-filter>.

android:label
תווית שקריאה למשתמש עבור מקלט השידור. אם לא מגדירים את המאפיין הזה, המערכת משתמשת בתווית שהוגדרה לאפליקציה כולה. אפשר לעיין במאפיין label של האלמנט <application>.

התווית של מקלט השידור, בין אם היא מוגדרת כאן או על ידי האלמנט <application>, היא גם התווית שמוגדרת כברירת מחדל לכל מסנני ה-Intent של המקלט. אפשר לעיין במאפיין label של רכיב <intent-filter>.

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

android:name
השם של המחלקה שמטמיעה את מקלט השידור, מחלקת משנה של BroadcastReceiver. זהו שם מחלקה שמוגדר במלואו, כמו "com.example.project.ReportReceiver". עם זאת, כקיצור דרך, אם התו הראשון בשם הוא נקודה, לדוגמה, ".ReportReceiver", הוא מצורף לשם החבילה שצוין באלמנט <manifest>.

אחרי שמפרסמים את האפליקציה, לא משנים את השם הזה, אלא אם מגדירים את android:exported="false".

אין ברירת מחדל. חובה לציין את השם.

android:permission
שם ההרשאה שנדרשת לשדרנים כדי לשלוח הודעה למקלט השידור. אם לא מגדירים את המאפיין הזה, חלות על מקלט השידור ההרשאות שמוגדרות במאפיין permission של הרכיב <application>. אם לא מוגדר אף אחד מהמאפיינים, הנמען לא מוגן על ידי הרשאה.

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

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

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

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

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

הושק ב:
רמת API 1