<接收者>

語法:
<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