- ไวยากรณ์:
<receiver android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > ... </receiver>
- อยู่ใน:
<application>- มีได้ดังนี้:
<intent-filter><meta-data><property>- คำอธิบาย:
- ประกาศตัวรับสัญญาณการออกอากาศ ซึ่งเป็นคลาสย่อย
BroadcastReceiverให้เป็นหนึ่งในคอมโพเนนต์ของแอปพลิเคชัน ตัวรับสัญญาณการออกอากาศช่วยให้แอปพลิเคชันรับ Intent ที่ระบบหรือแอปพลิเคชันอื่นๆ ออกอากาศได้ แม้ว่าคอมโพเนนต์อื่นๆ ของแอปพลิเคชันจะไม่ได้ทำงานอยู่ก็ตามคุณสามารถแจ้งให้ระบบทราบถึงตัวรับสัญญาณการออกอากาศได้ 2 วิธี วิธีหนึ่งคือการประกาศในไฟล์ Manifest ด้วยองค์ประกอบนี้ อีกวิธีคือการสร้างตัวรับสัญญาณแบบไดนามิกในโค้ดและลงทะเบียนด้วยเมธอด
Context.registerReceiver()หรือเวอร์ชันที่โอเวอร์โหลดเวอร์ชันใดเวอร์ชันหนึ่งดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างตัวรับสัญญาณแบบไดนามิกได้ที่คำอธิบายคลาส
BroadcastReceiverหากตัวรับสัญญาณนี้จัดการการออกอากาศที่ไม่ใช่ระบบ ให้ระบุค่าสำหรับ
android:exportedตั้งค่านี้เป็น"true"หากต้องการให้ตัวรับสัญญาณรับการออกอากาศจากแอปพลิเคชันอื่นๆ ได้ หรือ"false"หากต้องการให้ตัวรับสัญญาณรับการออกอากาศจากแอปของคุณเองเท่านั้นคุณไม่จำเป็นต้องนำแอตทริบิวต์
android:permissionออกหากได้ประกาศไว้แล้วคำเตือน: จำกัดจำนวนตัวรับสัญญาณการออกอากาศที่คุณตั้งค่าไว้ในแอป การมีตัวรับสัญญาณการออกอากาศมากเกินไปอาจส่งผลต่อประสิทธิภาพของแอปและอายุการใช้งานแบตเตอรี่ของอุปกรณ์ของผู้ใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ที่คุณใช้แทนคลาส
BroadcastReceiverสำหรับการกำหนดเวลาการทำงานเบื้องหลังได้ที่ การเพิ่มประสิทธิภาพเบื้องหลัง - แอตทริบิวต์:
android:directBootAwareระบุว่าตัวรับสัญญาณการออกอากาศ รองรับการบูตโดยตรง หรือไม่ นั่น คือสามารถทำงานได้ก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์หรือไม่
หมายเหตุ: ระหว่าง การบูตโดยตรง ตัวรับสัญญาณการออกอากาศในแอปพลิเคชันของคุณจะเข้าถึงได้เฉพาะข้อมูลที่จัดเก็บไว้ใน พื้นที่เก็บข้อมูล ที่ได้รับการปกป้องด้วยอุปกรณ์
ค่าเริ่มต้นคือ
"false"android:enabled- ระบุว่าระบบสร้างอินสแตนซ์ของตัวรับสัญญาณการออกอากาศได้หรือไม่ ค่าจะเป็น
"true"หากสร้างได้ และ"false"หากสร้างไม่ได้ ค่าเริ่มต้นคือ"true"องค์ประกอบ
<application>มีแอตทริบิวต์enabledของตัวเองซึ่งใช้กับคอมโพเนนต์ทั้งหมดของ แอปพลิเคชัน รวมถึงตัวรับสัญญาณการออกอากาศ แอตทริบิวต์<application>และ<receiver>ต้องมีค่าเป็น"true"ทั้งคู่สำหรับ เพื่อให้เปิดใช้ตัวรับสัญญาณการออกอากาศได้ หากแอตทริบิวต์ใดแอตทริบิวต์หนึ่งมีค่าเป็น"false"ตัวรับสัญญาณจะถูกปิดใช้และสร้างอินสแตนซ์ไม่ได้ android:exported- ระบุว่าตัวรับสัญญาณการออกอากาศรับข้อความจากแหล่งที่มาที่ไม่ใช่ระบบภายนอกแอปพลิเคชันได้หรือไม่ ค่าจะเป็น
"true"หากรับได้ และ"false"หากรับไม่ได้ หากมีค่าเป็น"false"ตัวรับสัญญาณการออกอากาศจะได้รับเฉพาะข้อความที่ส่งโดยระบบ คอมโพเนนต์ของแอปพลิเคชันเดียวกัน หรือแอปพลิเคชันที่มีรหัสผู้ใช้เดียวกันหากไม่ได้ระบุ ค่าเริ่มต้นจะขึ้นอยู่กับว่าตัวรับสัญญาณการออกอากาศมีตัวกรอง Intent หรือไม่ หากตัวรับสัญญาณมีตัวกรอง Intent อย่างน้อย 1 รายการ ค่าเริ่มต้นจะเป็น
"true"หากไม่มี ค่าเริ่มต้นจะเป็น"false"แอตทริบิวต์นี้ไม่ใช่วิธีเดียวในการจำกัดการเข้าถึงภายนอกของตัวรับสัญญาณการออกอากาศ คุณยังใช้สิทธิ์เพื่อจำกัดเอนทิตีภายนอกที่ส่งข้อความไปยังตัวรับสัญญาณได้ด้วย ดูแอตทริบิวต์
permission android:icon- ไอคอนที่แสดงถึงตัวรับสัญญาณการออกอากาศ แอตทริบิวต์นี้ตั้งค่าเป็นการอ้างอิงไปยังทรัพยากร Drawable ที่มีคำจำกัดความของรูปภาพ
หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ไอคอนที่ระบุไว้สำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์ขององค์ประกอบ
<application>iconไอคอนของตัวรับสัญญาณการออกอากาศ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือโดยองค์ประกอบ
<application>ก็จะเป็น ไอคอนเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของตัวรับสัญญาณด้วย ดูแอตทริบิวต์iconขององค์ประกอบ<intent-filter> android:intentMatchingFlags-
ใช้แอตทริบิวต์นี้เพื่อปรับแต่งวิธีที่ระบบจับคู่ Intent ขาเข้ากับคอมโพเนนต์ของแอป โดยค่าเริ่มต้น ระบบจะไม่มีการใช้กฎการจับคู่พิเศษ
ค่าที่ตั้งไว้ในแท็ก
<receiver>จะลบล้างค่าที่ตั้งไว้ในแท็ก<application>ค่าต้องเป็นแฟล็กต่อไปนี้อย่างน้อย 1 รายการ โดยคั่นด้วย "
|"แฟล็ก คำอธิบาย noneปิดใช้กฎการจับคู่พิเศษทั้งหมดสำหรับ Intent ขาเข้า เมื่อ ระบุแฟล็กหลายรายการ ระบบจะแก้ค่าที่ขัดแย้งกันโดยให้ความสำคัญกับแฟล็ก noneenforceIntentFilterบังคับใช้การจับคู่ที่เข้มงวดขึ้นสำหรับ Intent ขาเข้า
- Intent ที่ชัดเจนต้องตรงกับตัวกรอง Intent ของคอมโพเนนต์เป้าหมาย
- Intent ที่ไม่มีการดำเนินการจะไม่ตรงกับตัวกรอง Intent ใดๆ
allowNullActionผ่อนปรนกฎการจับคู่เพื่ออนุญาตให้ Intent ที่ไม่มีการดำเนินการตรงกัน แฟล็กนี้ใช้ร่วมกับ
enforceIntentFilterเพื่อให้ได้ลักษณะการทำงานต่อไปนี้- Intent ที่ชัดเจนต้องตรงกับตัวกรอง Intent ของคอมโพเนนต์เป้าหมาย
- Intent ที่ไม่มีการดำเนินการจะตรงกับตัวกรอง Intent ใดก็ได้
ดูข้อมูลเพิ่มเติมได้ที่ส่วน Intent ที่ปลอดภัยยิ่งขึ้น ในการเปลี่ยนแปลงลักษณะการทำงานของ Android 16 (API ระดับ 36)
android:label- ป้ายกำกับที่ผู้ใช้อ่านได้สำหรับตัวรับสัญญาณการออกอากาศ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะใช้ป้ายกำกับที่ตั้งไว้สำหรับแอปพลิเคชันโดยรวมแทน ดูแอตทริบิวต์
labelขององค์ประกอบ<application>ป้ายกำกับของตัวรับสัญญาณการออกอากาศ ไม่ว่าจะตั้งค่าไว้ที่นี่หรือโดยองค์ประกอบ
<application>ก็จะเป็น ป้ายกำกับเริ่มต้นสำหรับตัวกรอง Intent ทั้งหมดของตัวรับสัญญาณด้วย ดูแอตทริบิวต์labelขององค์ประกอบ<intent-filter>ป้ายกำกับจะตั้งค่าเป็นการอ้างอิงไปยังทรัพยากรสตริงเพื่อให้แปลเป็นภาษาต่างๆ ได้เหมือนกับสตริงอื่นๆ ในอินเทอร์เฟซผู้ใช้ อย่างไรก็ตาม คุณยังตั้งค่าเป็นสตริงดิบได้ด้วยเพื่อความสะดวกขณะพัฒนาแอปพลิเคชัน
android:name- ชื่อของคลาสที่ใช้ตัวรับสัญญาณการออกอากาศ ซึ่งเป็นคลาสย่อยของ
BroadcastReceiverนี่คือชื่อคลาสที่มีคุณสมบัติครบถ้วน เช่น"com.example.project.ReportReceiver"อย่างไรก็ตาม หากอักขระแรกของชื่อเป็นจุด เช่น".ReportReceiver"ระบบจะต่อท้ายชื่อแพ็กเกจที่ระบุไว้ใน องค์ประกอบ<manifest>เมื่อเผยแพร่แอปพลิเคชันแล้ว อย่า เปลี่ยนชื่อนี้ เว้นแต่คุณจะตั้งค่า
android:exported="false"ไม่มีค่าเริ่มต้น ต้องระบุชื่อ
android:permission- ชื่อของสิทธิ์ที่ผู้ออกอากาศต้องมีเพื่อส่งข้อความไปยังตัวรับสัญญาณการออกอากาศ
หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ สิทธิ์ที่ตั้งค่าโดย
<application>แอตทริบิวต์permissionขององค์ประกอบจะใช้ กับตัวรับสัญญาณการออกอากาศ หากไม่ได้ตั้งค่าแอตทริบิวต์ใดแอตทริบิวต์หนึ่ง ตัวรับสัญญาณจะไม่ได้รับการปกป้องด้วยสิทธิ์ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ ส่วนสิทธิ์ ในภาพรวมของ Manifest ของแอปและ เคล็ดลับด้านความปลอดภัย
android:processชื่อของกระบวนการที่ตัวรับสัญญาณการออกอากาศทำงานอยู่ โดยปกติแล้ว คอมโพเนนต์ทั้งหมดของแอปพลิเคชันจะทำงานในกระบวนการเริ่มต้นที่สร้างขึ้นสำหรับแอปพลิเคชัน ซึ่งมีชื่อเดียวกับแพ็กเกจของแอปพลิเคชัน
แอตทริบิวต์
processขององค์ประกอบ<application>สามารถตั้งค่า เริ่มต้นอื่นสำหรับคอมโพเนนต์ทั้งหมดได้ แต่คอมโพเนนต์แต่ละรายการสามารถลบล้างค่าเริ่มต้นด้วยแอตทริบิวต์processของตัวเอง ซึ่งช่วยให้คุณกระจายแอปพลิเคชันไปยังกระบวนการต่างๆ ได้หากชื่อที่กำหนดให้กับแอตทริบิวต์นี้ขึ้นต้นด้วยโคลอน (
:) ระบบจะสร้างกระบวนการใหม่ที่เป็นส่วนตัวสำหรับแอปพลิเคชันเมื่อจำเป็น และตัวรับสัญญาณการออกอากาศจะทำงานในกระบวนการนั้นหากชื่อกระบวนการขึ้นต้นด้วยอักขระตัวพิมพ์เล็ก ตัวรับสัญญาณจะทำงานในกระบวนการส่วนกลางที่มีชื่อนั้น โดยมีเงื่อนไขว่าตัวรับสัญญาณมีสิทธิ์ดำเนินการดังกล่าว ซึ่งจะช่วยให้คอมโพเนนต์ในแอปพลิเคชันต่างๆ แชร์กระบวนการเดียวกันได้ ซึ่งจะช่วยลดการใช้ทรัพยากร
- เปิดตัวใน:
- API ระดับ 1
<ตัวรับ>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2026-07-03 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"]],["อัปเดตล่าสุด 2026-07-03 UTC"],[],[]]