- 構文:
<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
サブクラス)をアプリのコンポーネントの 1 つとして宣言します。ブロードキャスト レシーバを使用すると、アプリの他のコンポーネントが実行されていない場合でも、システムまたは他のアプリからブロードキャストされたインテントをアプリで受信できます。ブロードキャスト レシーバの存在をシステムに知らせる方法には、マニフェスト ファイルでこの要素を使用して宣言する方法と、コードでレシーバを動的に作成して
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 が同一のアプリのコンポーネントから送信されたメッセージしか受信できなくなります。デフォルト値は、ブロードキャスト レシーバにインテント フィルタが含まれているかどうかによって異なります。フィルタが含まれていない場合は、正確なクラス名を指定する Intent オブジェクトでのみブロードキャスト レシーバを呼び出すことができます。これは、レシーバがアプリ内部での使用のみを目的としていることを意味します(通常、それ以外ではクラス名がわからないため)。そのため、この場合のデフォルト値は "
false
" になります。一方、フィルタが 1 つ以上存在する場合、ブロードキャスト レシーバはシステムや他のアプリからブロードキャストされたインテントを受信することができます。そのため、デフォルト値は "true
" になります。この属性を使用すること以外にもブロードキャスト レシーバの外部への公開を制限する方法はあります。ブロードキャスト レシーバにメッセージを送信可能な外部エンティティを制限する権限を使用することもできます(
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 レベル:
- API レベル 1
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-12-27 UTC.