<受信者>

構文:
<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 サブクラス)をアプリのコンポーネントの一つとして宣言します。ブロードキャスト レシーバを使用すると、アプリの他のコンポーネントが実行されていない場合でも、システムまたは他のアプリからブロードキャストされたインテントをアプリで受信できます。

ブロードキャスト レシーバの存在をシステムに知らせる方法は 2 つあります。一つは、マニフェスト ファイルでこの要素を使用して宣言する方法です。もう一つは、コードでレシーバを動的に作成して、Context.registerReceiver() メソッドかオーバーロードされたいずれかのバージョンで登録する方法です。

レシーバを動的に作成する方法について詳しくは、BroadcastReceiver クラスの説明をご覧ください。

このレシーバがシステム以外のブロードキャストを処理する場合は、android:exported の値を指定します。レシーバが他のアプリからのブロードキャストを受信できるようにする場合は、この値を "true" に設定し、レシーバが自身のアプリからのブロードキャストのみを受信できるようにする場合は、"false" に設定します。

android:permission 属性をすでに宣言している場合は、削除する必要はありません。

警告: アプリで設定するブロードキャスト レシーバの数を制限してください。ブロードキャスト レシーバが多すぎると、アプリのパフォーマンスやユーザーのデバイスのバッテリー駆動時間に影響することがあります。バックグラウンド処理のスケジュール設定用に 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