- 構文:
<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
クラスの説明をご覧ください。このレシーバがシステム以外のブロードキャストを処理する場合は、
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
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2023-01-04 UTC。
[]
[]