構文:
<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() メソッドで登録する方法の 2 つがあります。レシーバを動的に作成する方法について詳しくは、BroadcastReceiver クラスの説明をご覧ください。

警告: アプリで設定するブロードキャスト レシーバの数を制限してください。ブロードキャスト レシーバが多すぎると、アプリのパフォーマンスやユーザーのデバイスのバッテリー駆動時間に影響することがあります。バックグラウンド処理のスケジュール設定用に BroadcastReceiver クラスの代わりに使用できる API について詳しくは、バックグラウンド処理の最適化をご覧ください。

属性:
android:directBootAware

ブロードキャスト レシーバがダイレクト ブートに対応しているかどうか、つまり、ユーザーがデバイスのロックを解除する前にブロードキャスト レシーバを実行できるかどうかを指定します。

注: ダイレクト ブート中、アプリのブロードキャスト レシーバはデバイス保護ストレージに保存されているデータにのみアクセスできます。

デフォルト値は "false" です。

android:enabled
ブロードキャスト レシーバをシステムがインスタンス化できるかどうかを指定します。インスタンス化できる場合は「true」、そうでない場合は「false」に設定します。デフォルト値は「true」です。

<application> 要素には、ブロードキャスト レシーバを含むすべてのアプリ コンポーネントに適用される独自の enabled 属性があります。ブロードキャスト レシーバを有効にするには、<application> 属性と <receiver> 属性の両方を「true」に設定する必要があります。どちらかが「false」の場合はブロードキャスト レシーバが無効になり、インスタンス化できません。

android:exported
ブロードキャスト レシーバがアプリ外のシステム以外のソースからメッセージを受信できるかどうかを指定します。受信できる場合は「true」、そうでない場合は「false」に設定します。「false」に設定すると、ブロードキャスト レシーバは、システム、同じアプリのコンポーネント、またはユーザー ID が同一のアプリから送信されたメッセージしか受信できなくなります。

指定しない場合のデフォルト値は、ブロードキャスト レシーバにインテント フィルタが含まれているかどうかによって異なります。レシーバにインテント フィルタが 1 つ以上含まれている場合、デフォルト値は「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 属性を使用することで、デフォルト値をオーバーライドできます。これにより、アプリを複数のプロセスに分散できます。

この属性に割り当てられた名前がコロン(「:」)で始まる場合、必要に応じてアプリ専用の新しいプロセスが作成され、そのプロセス内でブロードキャスト レシーバが実行されます。プロセス名が小文字で始まる場合、レシーバはその名前のグローバル プロセス内で実行されます(その権限がある場合)。これにより、異なるアプリのコンポーネント間で 1 つのプロセスを共有して、リソース使用量を削減できます。

導入時の API レベル:
API レベル 1