<ตัวรับ>

ไวยากรณ์:
<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>
คำอธิบาย:
ประกาศ Broadcast Receiver ซึ่งเป็นBroadcastReceiver คลาสย่อยเป็นหนึ่งในคอมโพเนนต์ของแอปพลิเคชัน Broadcast Receiver ช่วยให้แอปพลิเคชันรับ Intent ที่ระบบหรือแอปพลิเคชันอื่นๆ ออกอากาศได้ แม้ว่าคอมโพเนนต์อื่นๆ ของแอปพลิเคชันจะไม่ได้ทำงานอยู่ก็ตาม

การทำให้ระบบรู้จัก Broadcast Receiver ทำได้ 2 วิธี วิธีหนึ่งคือการประกาศในไฟล์ Manifest ด้วยองค์ประกอบนี้ อีกวิธีคือการสร้าง ตัวรับสัญญาณแบบไดนามิกในโค้ดและลงทะเบียนด้วยเมธอด Context.registerReceiver() หรือเวอร์ชันที่โอเวอร์โหลด

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างตัวรับสัญญาณแบบไดนามิกได้ที่คำอธิบายBroadcastReceiverคลาส

หากตัวรับนี้จัดการการออกอากาศที่ไม่ใช่ของระบบ ให้ระบุค่าสำหรับ android:exported ตั้งค่านี้เป็น "true" หากต้องการให้ตัวรับสัญญาณรับ การออกอากาศของตัวรับสัญญาณจากแอปพลิเคชันอื่นๆ หรือ "false" หากต้องการให้ตัวรับสัญญาณรับ การออกอากาศจากแอปของคุณเองเท่านั้น

คุณไม่ต้องนำแอตทริบิวต์ android:permission ออกหากได้ประกาศไว้แล้ว

คำเตือน: จำกัดจำนวน Broadcast Receiver ที่คุณตั้งค่าในแอป การมี Broadcast Receiver มากเกินไปอาจ ส่งผลต่อประสิทธิภาพของแอปและระยะเวลาการใช้งานแบตเตอรี่ของอุปกรณ์ของผู้ใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ที่คุณใช้แทนคลาส BroadcastReceiver เพื่อกำหนดเวลาการทำงานเบื้องหลังได้ที่การเพิ่มประสิทธิภาพเบื้องหลัง

แอตทริบิวต์
android:directBootAware

ตัวรับสัญญาณออกอากาศเป็น Direct-Boot aware หรือไม่ นั่นคือสามารถทำงานได้ก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์หรือไม่

หมายเหตุ: ในระหว่างDirect Boot ตัวรับสัญญาณออกอากาศในแอปพลิเคชันจะเข้าถึงได้เฉพาะข้อมูลที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลที่อุปกรณ์ป้องกัน

ค่าเริ่มต้นคือ "false"

android:enabled
ระบบจะสร้างอินสแตนซ์ของ Broadcast Receiver ได้หรือไม่ โดยจะ "true" หากทำได้ และ "false" หากทำไม่ได้ ค่าเริ่มต้น คือ "true"

องค์ประกอบ <application> มีแอตทริบิวต์ enabled ของตัวเองซึ่งใช้กับคอมโพเนนต์แอปพลิเคชันทั้งหมด รวมถึง Broadcast Receiver แอตทริบิวต์ <application> และ <receiver> ต้องเป็น "true" ทั้งคู่จึงจะเปิดใช้ Broadcast Receiver ได้ หากเป็น "false" ระบบจะปิดใช้และสร้างอินสแตนซ์ไม่ได้

android:exported
Broadcast Receiver รับข้อความจากแหล่งที่มาที่ไม่ใช่ระบบภายนอกแอปพลิเคชันได้หรือไม่ "true" หากทำได้ และ "false" หากทำไม่ได้ หากเป็น "false" Broadcast Receiver จะได้รับเฉพาะข้อความที่ระบบส่ง คอมโพเนนต์ของแอปพลิเคชันเดียวกัน หรือแอปพลิเคชันที่มีรหัสผู้ใช้เดียวกัน

หากไม่ได้ระบุ ค่าเริ่มต้นจะขึ้นอยู่กับว่า Broadcast Receiver มีตัวกรอง Intent หรือไม่ หากตัวรับมีตัวกรอง Intent อย่างน้อย 1 รายการ ค่าเริ่มต้นจะเป็น "true" ไม่เช่นนั้น ค่าเริ่มต้นจะเป็น "false"

แอตทริบิวต์นี้ไม่ใช่เพียงวิธีเดียวในการจำกัดการเปิดเผยภายนอกของ Broadcast Receiver นอกจากนี้ คุณยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่ส่งข้อความได้ด้วย ดูแอตทริบิวต์ permission

android:icon
ไอคอนที่แสดงถึง Broadcast Receiver แอตทริบิวต์นี้ตั้งค่า เป็นการอ้างอิงไปยังทรัพยากรที่วาดได้ซึ่งมีคำจำกัดความของรูปภาพ หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ไอคอนที่ระบุสำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์ icon ขององค์ประกอบ <application>

ไอคอนของ Broadcast Receiver ไม่ว่าจะตั้งค่าที่นี่หรือโดยองค์ประกอบ <application> ก็จะเป็น ไอคอนเริ่มต้นสำหรับตัวกรอง Intent ของ Receiver ทั้งหมดด้วย ดูแอตทริบิวต์iconขององค์ประกอบ <intent-filter>

android:label
ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับ Broadcast Receiver หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะใช้ป้ายกำกับที่ตั้งค่าไว้สำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์ label ขององค์ประกอบ <application>

ป้ายกำกับของ Broadcast Receiver ไม่ว่าจะตั้งค่าที่นี่หรือโดยองค์ประกอบ <application> ก็เป็นป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของ Receiver ด้วย ดูแอตทริบิวต์labelขององค์ประกอบ <intent-filter>

ป้ายกำกับจะตั้งค่าเป็นข้อมูลอ้างอิงไปยังทรัพยากรสตริง เพื่อให้ แปลเป็นภาษาท้องถิ่นได้เหมือนสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ อย่างไรก็ตาม เพื่อความสะดวกในขณะที่คุณกำลังพัฒนาแอปพลิเคชัน คุณยังตั้งค่าเป็นสตริงดิบได้ด้วย

android:name
ชื่อของคลาสที่ใช้ตัวรับสัญญาณออกอากาศ ซึ่งเป็นคลาสย่อยของ BroadcastReceiver นี่คือชื่อคลาสที่สมบูรณ์ในตัวเอง เช่น "com.example.project.ReportReceiver" อย่างไรก็ตาม ในรูปแบบย่อ หากอักขระแรกของชื่อเป็นจุด เช่น ".ReportReceiver" ระบบจะต่อท้ายชื่อแพ็กเกจที่ระบุใน องค์ประกอบ <manifest>

เมื่อเผยแพร่แอปพลิเคชันแล้ว อย่า เปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า android:exported="false"

ไม่มีค่าเริ่มต้น ต้องระบุชื่อ

android:permission
ชื่อสิทธิ์ที่ผู้แพร่ภาพต้องมีเพื่อส่งข้อความไปยัง Broadcast Receiver หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ชุดสิทธิ์ที่ตั้งค่าโดยแอตทริบิวต์ <application>ขององค์ประกอบ permissionจะมีผล กับ BroadcastReceiver หากไม่ได้ตั้งค่าแอตทริบิวต์ใดไว้ ตัวรับ จะไม่ได้รับการปกป้องด้วยสิทธิ์

ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ส่วนสิทธิ์ในภาพรวมของไฟล์ Manifest ของแอปและเคล็ดลับด้านความปลอดภัย

android:process
ชื่อของกระบวนการที่ Broadcast Receiver ทำงาน โดยปกติแล้ว คอมโพเนนต์ทั้งหมดของแอปพลิเคชันจะทำงานในกระบวนการเริ่มต้นที่สร้างขึ้น สำหรับแอปพลิเคชัน โดยมีชื่อเหมือนกับแพ็กเกจแอปพลิเคชัน

แอตทริบิวต์ processขององค์ประกอบ <application>สามารถตั้งค่า เริ่มต้นที่แตกต่างกันสำหรับคอมโพเนนต์ทั้งหมดได้ แต่คอมโพเนนต์แต่ละรายการจะลบล้างค่าเริ่มต้นได้ ด้วยแอตทริบิวต์ process ของตัวเอง ซึ่งช่วยให้คุณกระจาย แอปพลิเคชันไปยังหลายกระบวนการได้

หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้ขึ้นต้นด้วยโคลอน (:) ระบบจะสร้างกระบวนการใหม่ ซึ่งเป็นกระบวนการส่วนตัวของแอปพลิเคชันเมื่อจำเป็น และ Broadcast Receiver จะทำงานในกระบวนการนั้น

หากชื่อกระบวนการขึ้นต้นด้วยอักขระพิมพ์เล็ก ตัวรับจะทำงานในกระบวนการส่วนกลางที่มีชื่อนั้น โดยมีเงื่อนไขว่าตัวรับมีสิทธิ์ทำเช่นนั้น ซึ่งจะช่วยให้คอมโพเนนต์ในแอปพลิเคชันต่างๆ แชร์กระบวนการได้ ทำให้ลดการใช้ทรัพยากรลง

เปิดตัวใน
ระดับ API 1