- نحو:
<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>
- توضیحات:
- یک گیرنده پخش، یک زیرکلاس
BroadcastReceiver
، را به عنوان یکی از اجزای برنامه اعلام می کند. گیرندههای پخش، برنامهها را قادر میسازند تا مقاصدی را دریافت کنند که توسط سیستم یا سایر برنامهها پخش میشوند، حتی زمانی که سایر اجزای برنامه در حال اجرا نیستند.دو راه برای شناخته شدن یک گیرنده پخش به سیستم وجود دارد. یکی این است که آن را در فایل مانیفست با این عنصر اعلام کنید. دیگری ایجاد گیرنده به صورت پویا در کد و ثبت آن با متد
Context.registerReceiver()
یا یکی از نسخه های بارگذاری شده آن است.برای اطلاعات بیشتر در مورد نحوه ایجاد گیرنده به صورت پویا، به توضیحات کلاس
BroadcastReceiver
مراجعه کنید.اگر این گیرنده پخشهای غیر سیستمی را مدیریت میکند، مقداری را برای
android:exported
مشخص کنید. اگر میخواهید گیرندهتان بتواند پخشهای دریافتکننده از برنامههای دیگر را داشته باشد، این مقدار را روی"true"
یا اگر میخواهید گیرنده شما فقط قادر به دریافت پخش از برنامه خودتان باشد"false"
را تنظیم کنید.اگر قبلاً مشخصه
android:permission
را اعلام کرده اید، لازم نیست آن را حذف کنید.هشدار: تعداد گیرنده های پخشی را که در برنامه خود تنظیم می کنید محدود کنید. داشتن گیرنده های پخش بیش از حد می تواند بر عملکرد برنامه شما و عمر باتری دستگاه های کاربران تأثیر بگذارد. برای اطلاعات بیشتر در مورد APIها میتوانید به جای کلاس
BroadcastReceiver
برای زمانبندی کار پسزمینه استفاده کنید، به بهینهسازی پسزمینه مراجعه کنید. - صفات:
-
android:directBootAware
آیا گیرنده پخش از Direct-Boot آگاه است یا خیر، یعنی می تواند قبل از باز کردن قفل دستگاه توسط کاربر اجرا شود یا خیر.
توجه: در طول راهاندازی مستقیم ، یک گیرنده پخش در برنامه شما فقط میتواند به دادههایی که در فضای ذخیرهسازی محافظت شده دستگاه ذخیره شدهاند دسترسی داشته باشد.
مقدار پیش فرض
"false"
است.-
android:enabled
- آیا گیرنده پخش می تواند توسط سیستم نمونه برداری شود یا خیر. اگر می تواند
"true"
است و اگر نه"false"
. مقدار پیش فرض"true"
است.عنصر
<application>
ویژگیenabled
خود را دارد که برای همه اجزای برنامه از جمله گیرنده های پخش اعمال می شود. ویژگی های<application>
و<receiver>
هر دو باید"true"
باشند تا گیرنده پخش فعال شود. اگر هر کدام"false"
باشد، غیرفعال است و نمیتوان آن را نمونهسازی کرد. -
android:exported
- آیا گیرنده پخش می تواند پیام ها را از منابع غیر سیستمی خارج از برنامه خود دریافت کند یا خیر. اگر بتواند
"true"
است و اگر نه"false"
. اگر"false"
باشد، تنها پیامهایی که گیرنده پخش دریافت میکند پیامهایی است که توسط سیستم، اجزای همان برنامه یا برنامههایی با شناسه کاربری یکسان ارسال میشود.اگر مشخص نباشد، مقدار پیشفرض به این بستگی دارد که گیرنده پخش دارای فیلترهای هدف باشد یا خیر. اگر گیرنده دارای حداقل یک فیلتر هدف باشد، مقدار پیشفرض
"true"
است. در غیر این صورت، مقدار پیش فرض"false"
است.این ویژگی تنها راه برای محدود کردن نوردهی خارجی گیرنده پخش نیست. همچنین میتوانید از یک مجوز برای محدود کردن نهادهای خارجی که میتوانند به آن پیام ارسال کنند، استفاده کنید. ویژگی
permission
را ببینید. -
android:icon
- نمادی که گیرنده پخش را نشان می دهد. این ویژگی به عنوان یک مرجع به یک منبع قابل ترسیم حاوی تعریف تصویر تنظیم می شود. اگر تنظیم نشده باشد، به جای آن از نماد مشخص شده برای برنامه به طور کلی استفاده می شود. ویژگی
icon
عنصر<application>
را ببینید.نماد گیرنده پخش، چه در اینجا تنظیم شده باشد و چه توسط عنصر
<application>
، همچنین نماد پیش فرض تمام فیلترهای هدف گیرنده است. ویژگیicon
عنصر<intent-filter>
را ببینید. -
android:label
- یک برچسب قابل خواندن توسط کاربر برای گیرنده پخش. اگر این ویژگی تنظیم نشده باشد، به جای آن از برچسب مجموعه برای برنامه به طور کلی استفاده می شود. ویژگی
label
عنصر<application>
را ببینید.برچسب گیرنده پخش، چه در اینجا تنظیم شده باشد و چه توسط عنصر
<application>
، همچنین برچسب پیش فرض برای تمام فیلترهای هدف گیرنده است. ویژگی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
- نحو:
<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>
- توضیحات:
- یک گیرنده پخش، یک زیرکلاس
BroadcastReceiver
، را به عنوان یکی از اجزای برنامه اعلام می کند. گیرندههای پخش، برنامهها را قادر میسازند تا مقاصدی را دریافت کنند که توسط سیستم یا سایر برنامهها پخش میشوند، حتی زمانی که سایر اجزای برنامه در حال اجرا نیستند.دو راه برای شناخته شدن یک گیرنده پخش به سیستم وجود دارد. یکی این است که آن را در فایل مانیفست با این عنصر اعلام کنید. دیگری ایجاد گیرنده به صورت پویا در کد و ثبت آن با متد
Context.registerReceiver()
یا یکی از نسخه های بارگذاری شده آن است.برای اطلاعات بیشتر در مورد نحوه ایجاد گیرنده به صورت پویا، به توضیحات کلاس
BroadcastReceiver
مراجعه کنید.اگر این گیرنده پخشهای غیر سیستمی را مدیریت میکند، مقداری را برای
android:exported
مشخص کنید. اگر میخواهید گیرندهتان بتواند پخشهای دریافتکننده از برنامههای دیگر را داشته باشد، این مقدار را روی"true"
یا اگر میخواهید گیرنده شما فقط قادر به دریافت پخش از برنامه خودتان باشد"false"
را تنظیم کنید.اگر قبلاً مشخصه
android:permission
را اعلام کرده اید، لازم نیست آن را حذف کنید.هشدار: تعداد گیرنده های پخشی را که در برنامه خود تنظیم می کنید محدود کنید. داشتن گیرنده های پخش بیش از حد می تواند بر عملکرد برنامه شما و عمر باتری دستگاه های کاربران تأثیر بگذارد. برای اطلاعات بیشتر در مورد APIها میتوانید به جای کلاس
BroadcastReceiver
برای زمانبندی کار پسزمینه استفاده کنید، به بهینهسازی پسزمینه مراجعه کنید. - صفات:
-
android:directBootAware
آیا گیرنده پخش از Direct-Boot آگاه است یا خیر، یعنی می تواند قبل از باز کردن قفل دستگاه توسط کاربر اجرا شود یا خیر.
توجه: در طول راهاندازی مستقیم ، یک گیرنده پخش در برنامه شما فقط میتواند به دادههایی که در فضای ذخیرهسازی محافظت شده دستگاه ذخیره شدهاند دسترسی داشته باشد.
مقدار پیش فرض
"false"
است.-
android:enabled
- آیا گیرنده پخش می تواند توسط سیستم نمونه برداری شود یا خیر. اگر می تواند
"true"
است و اگر نه"false"
. مقدار پیش فرض"true"
است.عنصر
<application>
ویژگیenabled
خود را دارد که برای همه اجزای برنامه از جمله گیرنده های پخش اعمال می شود. ویژگی های<application>
و<receiver>
هر دو باید"true"
باشند تا گیرنده پخش فعال شود. اگر هر کدام"false"
باشد، غیرفعال است و نمیتوان آن را نمونهسازی کرد. -
android:exported
- آیا گیرنده پخش می تواند پیام ها را از منابع غیر سیستمی خارج از برنامه خود دریافت کند یا خیر. اگر بتواند
"true"
است و اگر نه"false"
. اگر"false"
باشد، تنها پیامهایی که گیرنده پخش دریافت میکند پیامهایی است که توسط سیستم، اجزای همان برنامه یا برنامههایی با شناسه کاربری یکسان ارسال میشود.اگر مشخص نباشد، مقدار پیشفرض به این بستگی دارد که گیرنده پخش دارای فیلترهای هدف باشد یا خیر. اگر گیرنده دارای حداقل یک فیلتر هدف باشد، مقدار پیشفرض
"true"
است. در غیر این صورت، مقدار پیش فرض"false"
است.این ویژگی تنها راه برای محدود کردن نوردهی خارجی گیرنده پخش نیست. همچنین میتوانید از یک مجوز برای محدود کردن نهادهای خارجی که میتوانند به آن پیام ارسال کنند، استفاده کنید. ویژگی
permission
را ببینید. -
android:icon
- نمادی که گیرنده پخش را نشان می دهد. این ویژگی به عنوان یک مرجع به یک منبع قابل ترسیم حاوی تعریف تصویر تنظیم می شود. اگر تنظیم نشده باشد، به جای آن از نماد مشخص شده برای برنامه به طور کلی استفاده می شود. ویژگی
icon
عنصر<application>
را ببینید.نماد گیرنده پخش، چه در اینجا تنظیم شده باشد و چه توسط عنصر
<application>
، همچنین نماد پیش فرض تمام فیلترهای هدف گیرنده است. ویژگیicon
عنصر<intent-filter>
را ببینید. -
android:label
- یک برچسب قابل خواندن توسط کاربر برای گیرنده پخش. اگر این ویژگی تنظیم نشده باشد، به جای آن از برچسب مجموعه برای برنامه به طور کلی استفاده می شود. ویژگی
label
عنصر<application>
را ببینید.برچسب گیرنده پخش، چه در اینجا تنظیم شده باشد و چه توسط عنصر
<application>
، همچنین برچسب پیش فرض برای تمام فیلترهای هدف گیرنده است. ویژگی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