- ไวยากรณ์:
<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>
- description:
- ประกาศ Broadcast Receiver ซึ่งเป็น
BroadcastReceiver
คลาสย่อย เป็นหนึ่งในคอมโพเนนต์ของแอปพลิเคชัน เปิดใช้ Broadcast Receiver อยู่ แอปพลิเคชันเพื่อรับ Intent ที่เผยแพร่โดยระบบหรือโดย แม้ว่าคอมโพเนนต์อื่นๆ ของแอปพลิเคชันจะไม่ได้ทำงานอยู่ก็ตามการทำให้ระบบรู้จัก Broadcast Receiver ได้ 2 วิธี ประการแรกคือ ให้ประกาศในไฟล์ Manifest พร้อมด้วยเอลิเมนต์นี้ อีกวิธีคือการสร้าง ผู้รับแบบไดนามิกในโค้ดและลงทะเบียนไว้กับ
Context.registerReceiver()
หรือเมธอดใดเวอร์ชันหนึ่งที่โอเวอร์โหลดสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวรับแบบไดนามิก โปรดดู
BroadcastReceiver
ชั้นเรียน คำอธิบายหากตัวรับสัญญาณนี้จัดการการออกอากาศที่ไม่ใช่ระบบ ให้ระบุค่าสำหรับ
android:exported
ตั้งค่านี้เป็น"true"
หากคุณต้องการให้ผู้รับสามารถ ตัวรับสัญญาณจากแอปพลิเคชันอื่นหรือ"false"
หากคุณ ต้องการให้ผู้รับรับการออกอากาศจากแอปของคุณเองได้คุณไม่จำเป็นต้องนำแอตทริบิวต์
android:permission
ออกหาก ได้ประกาศไปแล้วคำเตือน: จำกัดจำนวนการออกอากาศ รีซีฟเวอร์ที่คุณตั้งค่าไว้ในแอป การมี Broadcast Receiver มากเกินไปอาจ ส่งผลต่อประสิทธิภาพการทำงานของแอปและอายุการใช้งานแบตเตอรี่ของผู้ใช้ อุปกรณ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API ที่คุณสามารถใช้แทน
BroadcastReceiver
ชั้นเรียนสำหรับการจัดตารางเวลางานในเบื้องหลัง โปรดดู การเพิ่มประสิทธิภาพในเบื้องหลัง - ดังนี้
android:directBootAware
ตัวรับสัญญาณบรอดแคสต์นั้นรับรู้การเปิดเครื่องโดยตรงหรือไม่ คืออุปกรณ์จะทำงานก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์
หมายเหตุ: ระหว่าง 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 จะส่งข้อความ ผู้รับหมายถึงข้อความที่ส่งมาโดยระบบ คอมโพเนนต์ของแอปพลิเคชัน หรือแอปพลิเคชันเดียวกัน ด้วย User-ID เดียวกันหากไม่ระบุ ค่าเริ่มต้นจะขึ้นอยู่กับว่า Broadcast Receiver มี Intent หรือไม่ ตัวกรอง หากฝั่งผู้รับมีตัวกรอง Intent อย่างน้อย 1 รายการ ค่าเริ่มต้นจะเป็น
"true"
หากไม่ได้กำหนด ค่าเริ่มต้นจะเป็น"false"
แอตทริบิวต์นี้ไม่ใช่วิธีเดียวในการจำกัดการรับแสงภายนอกของ Broadcast Receiver คุณยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่ส่งข้อความได้ ดูแอตทริบิวต์
permission
android:icon
- ไอคอนที่แสดงถึง Broadcast Receiver ตั้งค่าแอตทริบิวต์นี้แล้ว
เป็นการอ้างอิงไปยังทรัพยากรที่ถอนออกได้ที่มีคำจำกัดความของรูปภาพ
หากไม่ได้ตั้งค่า ระบบจะใช้ไอคอนที่ระบุสำหรับแอปพลิเคชันโดยรวม
แทน โปรดดู
<application>
แอตทริบิวต์icon
ขององค์ประกอบไอคอนตัวรับสัญญาณออกอากาศ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตามการตั้งค่า
<application>
ยังเป็นองค์ประกอบ ไอคอนเริ่มต้นสำหรับตัวกรอง Intent ของผู้รับทั้งหมด โปรดดู ขององค์ประกอบ<intent-filter>
icon
android:label
- ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับ Broadcast Receiver หากแอตทริบิวต์นี้ไม่ใช่
ป้ายกำกับที่ตั้งไว้สำหรับแอปพลิเคชันโดยรวมคือ
ใช้แทน ดูองค์ประกอบ
<application>
label
ป้ายกำกับของผู้รับออกอากาศ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือตามการตั้งค่า
<application>
ยังเป็นองค์ประกอบ ป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ของผู้รับทั้งหมด โปรดดู ขององค์ประกอบ<intent-filter>
label
ป้ายกำกับได้รับการตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรสตริง ดังนั้น สามารถแปลได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ แต่เพื่อความสะดวก ในระหว่างที่คุณพัฒนาแอปพลิเคชัน ยังสามารถตั้งค่าเป็นสตริงดิบได้
android:name
- ชื่อคลาสที่ใช้งาน Broadcast Receiver ซึ่งเป็นคลาสย่อยของ
BroadcastReceiver
นี่เป็นคุณสมบัติที่สมบูรณ์ ชื่อชั้นเรียน เช่น"com.example.project.ReportReceiver"
อย่างไรก็ตาม เหมือนชวเลข ถ้าอักขระตัวแรกของชื่อคือจุด เช่น".ReportReceiver"
ต่อท้ายชื่อแพ็กเกจที่ระบุไว้ใน องค์ประกอบ<manifest>
เมื่อคุณเผยแพร่แอปพลิเคชันของคุณแล้ว อย่า เปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า
android:exported="false"
ไม่มีค่าเริ่มต้น ต้องระบุชื่อ
android:permission
- ชื่อสิทธิ์ที่ผู้ออกอากาศจำเป็นต้องมีเพื่อส่ง
ไปยัง Broadcast Receiver
หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ไว้ สิทธิ์ที่กำหนดโดย
ขององค์ประกอบ
<application>
ใช้แอตทริบิวต์permission
รายการ ไปยัง Broadcast Receiver หากไม่ได้ตั้งค่าแอตทริบิวต์ไว้ ตัวรับสัญญาณ ไม่ได้รับการคุ้มครองโดยสิทธิ์ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ สิทธิ์ ในภาพรวมไฟล์ Manifest ของแอปและ เคล็ดลับความปลอดภัย
android:process
- ชื่อกระบวนการที่ Broadcast Receiver ทำงาน
โดยปกติแล้ว คอมโพเนนต์ทั้งหมดของแอปพลิเคชันจะทำงานในกระบวนการเริ่มต้นที่สร้างขึ้น
สำหรับแอปพลิเคชัน มีชื่อเดียวกับแพ็กเกจแอปพลิเคชัน
ขององค์ประกอบ
<application>
แอตทริบิวต์process
สามารถตั้งค่า ค่าเริ่มต้นสำหรับทุกคอมโพเนนต์ แต่คอมโพเนนต์แต่ละอย่างสามารถแทนที่ค่าเริ่มต้น ด้วยแอตทริบิวต์process
ของตัวเองเพื่อ ช่วยให้คุณกระจายข้อมูล การใช้งานในหลายกระบวนการหากชื่อที่กำหนดให้กับแอตทริบิวต์นี้เริ่มต้นด้วยโคลอน (
:
) ซึ่งเป็นแบบส่วนตัวสำหรับแอปพลิเคชัน จะสร้างขึ้นเมื่อจำเป็น และ Broadcast Receiver จะทำงานในกระบวนการนั้นหากชื่อกระบวนการเริ่มต้นด้วยอักขระตัวพิมพ์เล็ก ตัวรับจะทำงาน ในกระบวนการส่วนกลางของชื่อนั้น หากชื่อนั้นได้รับอนุญาตให้ดำเนินการดังกล่าว ทำให้คอมโพเนนต์ต่างๆ ในแอปพลิเคชันต่างๆ สามารถแบ่งปันกระบวนการได้โดย การใช้ทรัพยากร
- เปิดตัวใน
- API ระดับ 1
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-08-22 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2024-08-22 UTC"],[],[]]