- 語法:
<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
廣播接收器是否為直接啟動感知特性;也就是說,使用者是否可在裝置解鎖前執行應用程式。
注意事項:在直接啟動期間,應用程式中的廣播接收器只能存取在「受裝置保護」儲存空間中的資料。
預設值為
"false"
。android:enabled
- 系統是否允許廣播接收器執行個體化,如果是,傳回「
true
」,如果否,傳回「false
」。預設值為「true
」。<application>
元素有專屬的enabled
屬性,會套用至所有應用程式元件,包括廣播接收器。<application>
和<receiver>
屬性都必須是「true
」,才能啟用廣播接收器。如果有任何一個為「false
」,則系統會停用;無法執行個體化。 android:exported
- 廣播接收器是否可以接收其應用程式以外的非系統源訊息,如是,傳回「
true
」;如否,傳回「false
」。如為「false
」,廣播接收者只能接收系統透過訊息、相同應用程式的元件,或是相同使用者 ID 的應用程式傳送的訊息。如果未指定,預設值取決於廣播接收器是否包含意圖篩選器。如果接收方至少包含一個意圖篩選器,則預設值為「
true
」。否則,預設值為「false
」。請注意,這個屬性不是限制廣播接收器外部曝光的唯一方法。您也可以使用權限來限制可傳送訊息的外部實體 (請參閱
permission
屬性)。 android:icon
- 用來代表廣播接收器的圖示。此屬性必須設定為對包含映像檔定義的可繪製資源的參照。如未設定,系統會改用為應用程式整體指定的圖示 (請參閱
<application>
元素的icon
屬性相關說明)。廣播接收器的圖示 (無論是在這裡設定,或由
<application>
元素設定) 也是所有接收器的意圖篩選器的預設圖示 (請參閱<intent-filter>
元素的icon
屬性相關說明)。 android:label
- 使用者可讀取的廣播接收器標籤。如果沒有設定這個屬性,就會使用為整個應用程式設定的標籤 (請參閱
<application>
元素的label
屬性相關說明)。廣播接收器的標籤 (無論是在這裡設定,或由
<application>
元素設定) 也是所有接收器的意圖篩選器的預設標籤 (請參閱<intent-filter>
元素的label
屬性相關說明)。標籤應該被設為對一個字串資源的引用,以便像使用者介面中的其他字串一樣進行語系本地化。不過為了方便起見,您也可以在開發應用程式時將其設為原始字串。
android:name
- 實作廣播接收器的類別名稱,這是
BroadcastReceiver
的子類別。這應該要是完整的類別名稱 (例如「com.example.project.ReportReceiver
」)。不過為了精簡起見,如果名稱的第一個半形字元是半形句號 (例如「. ReportReceiver
」),則會加到<manifest>
元素中所指定套件名稱的後方。發布應用程式後,除非您已設定
android:exported="false"
,否則請勿變更這個名稱。沒有預設值。您必須指定名稱。
android:permission
- 播送者必須向廣播接收器傳送訊息的權限名稱。如果未設定這項屬性,
<application>
元素的permission
屬性設定的權限會套用至該廣播接收器。如果未設定這兩個屬性,接收器就不會受到權限保護。 android:process
- 執行廣播接收器的流程名稱。一般來說,應用程式的所有元件都是在為應用程式建立的預設程序中執行。這個程序的名稱與應用程式套件的名稱相同。
<application>
元素的process
屬性可以為所有元件設定不同的預設值。不過,每個元件都可以透過各自的process
屬性覆寫預設值,讓您將應用程式分散至多個程序。如果指派給這項屬性的名稱開頭為半形冒號 (「:」),系統會在必要時建立新的應用程式專屬程序,並在該程序中執行廣播接收器。如果程序名稱的開頭是小寫英文半形字元,接收器會在採用該名稱的通用程序中執行,前提是該程序要具備相關權限。這樣可讓不同應用程式中的元件共用程序,進而減少資源用量。
- 導入版本:
- API 級別 1
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2023-01-02 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]