- 構文:
<data android:scheme="string" android:host="string" android:port="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:pathSuffix="string" android:pathAdvancedPattern="string" android:mimeType="string" />
- 上位の要素:
<intent-filter>
- 説明:
- インテント フィルタにデータ指定を追加します。指定する内容は、データ型(
mimeType
属性を使用)、URI、またはデータ型と URI の両方です。URI は、部分ごとに別個の属性を使用して指定します。<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
URI 形式を指定する各属性は省略可能ですが、相互に依存しています。
- インテント フィルタに対して
scheme
が指定されていない場合、他のすべての URI 属性が無視されます。 - フィルタに対して
host
が指定されていない場合、port
属性とすべてのパス属性が無視されます。
同一の
<intent-filter>
要素内に含まれている<data>
要素はすべて、同一のフィルタを構成します。たとえば、次のようなフィルタ指定があるとします。<intent-filter . . . > <data android:scheme="something" android:host="project.example.com" /> ... </intent-filter>
これは、下記のフィルタ指定と同じ意味になります。
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </intent-filter>
1 つの
<intent-filter>
内に任意の数の<data>
要素を配置して、複数のデータ オプションを指定できます。いずれの属性も、デフォルト値は設定されていません。インテント オブジェクトとフィルタのマッチング ルールなど、インテント フィルタの仕組みの詳細については、インテントとインテント フィルタ、およびマニフェスト ファイルの概要のインテント フィルタ セクションをご覧ください。
- インテント フィルタに対して
- 属性:
android:scheme
- URI のスキーマ部分。これは、URI を指定するうえで最小限の必須属性です。フィルタに対して少なくとも 1 つの
scheme
属性を設定する必要があります。この属性を設定していないと、他の URI 属性は意味を持ちません。スキーマを指定する際は、末尾にコロンは付けません(たとえば、
http:
ではなくhttp
)。フィルタにデータ型セット(
mimeType
属性を使用)が指定されていてスキーマが指定されていない場合、content:
とfile:
のスキームが想定されます。注: Android フレームワーク内のスキーマ マッチングの場合、RFC とは異なり、大文字と小文字が区別されます。そのため、スキーマを指定する際は、常に小文字を使用してください。
android:host
- URI 認証局のホスト部分。フィルタに対して
scheme
属性も指定されていないと、この属性は意味を持ちません。複数のサブドメインにマッチさせるには、アスタリスク(*
)を使用して、ホスト内の 0 個以上の文字にマッチさせます。たとえばホスト*.google.com
は、www.google.com
、.google.com
、developer.google.com
にマッチします。アスタリスクは host 属性の最初の文字にしか使えません。たとえばホスト
google.co.*
は、アスタリスク ワイルドカードが最初の文字ではないため無効です。注: Android フレームワーク内のホスト名マッチングの場合、正式な RFC とは異なり、大文字と小文字が区別されます。そのため、ホスト名を指定する際は、常に小文字を使用してください。
android:port
- URI 認証局のポート部分。この属性は、フィルタに対して
scheme
属性とhost
属性も指定している場合に限り、意味を持ちます。 android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- URI のパス部分。「
/
」で始まる必要があります。path
属性は、Intent
オブジェクトの完全パスに対してマッチングされる完全パスを指定します。pathPrefix
属性は、Intent
オブジェクトのパスの最初の部分のみに対してマッチングされる部分パスを指定します。pathSuffix
属性は、Intent
オブジェクトのパスの末尾部分に対して完全にマッチングされます。この属性は「/
」文字で始める必要はありません。pathPattern
属性は、Intent
オブジェクトの完全パスに対してマッチングされる完全パスを指定しますが、次のワイルドカードを含めることができます。- アスタリスク(
*
)は、直前の文字が 0 個以上出現するシーケンスと一致します。 - ピリオドとそれに続くアスタリスク(
.*
)は、0 個以上の文字のシーケンスに一致します。
pathAdvancedPattern
属性は、Intent
オブジェクトの完全パスと照合される完全パスを指定し、次の正規表現に似たパターンをサポートします。-
ピリオド(
.
)は任意の 1 文字に一致します。 -
集合(
[...]
)は文字の範囲に一致します。たとえば、[0-5]
は 0~5 の 1 つの数字に一致しますが、6~9 には一致しません。[a-zA-Z]
は、任意の 1 つの英字に一致します。大文字と小文字は区別されません。集合は否定修飾子(^
)もサポートします。 -
アスタリスク修飾子(
*
)は、直前のパターンの 0 回以上の繰り返しと一致します。 -
プラス修飾子(
+
)は、直前のパターンの 1 回以上の繰り返しと一致します。 -
範囲修飾子(「
{...}
」)を使用すると、パターンが一致する回数を指定できます。
pathAdvancedPattern
マッチャーは、リアルタイムでパターンを照合する評価実装です(後戻りはサポートしません)。\
は、文字列を XML から読み取る際にエスケープ文字として使用されるため、パターンとして解析される前にダブル エスケープする必要があります。たとえば、リテラル*
は\\*
と記述し、リテラル\
は\\\
と記述します。これは、Java コードで文字列を作成する場合に必要な記述方法と基本的に同じです。この 5 種類のパターンの詳細については、
PatternMatcher
クラスのPATTERN_LITERAL
、PATTERN_PREFIX
、PATTERN_SIMPLE_GLOB
、PATTERN_SUFFIX
、PATTERN_ADVANCED_GLOB
の説明をご覧ください。これらの属性は、フィルタに対して
scheme
属性とhost
属性も指定している場合に限り、意味を持ちます。pathSuffix
とpathAdvancedPattern
は API レベル 31 で導入されました。 - アスタリスク(
android:mimeType
- MIME メディアタイプ(
image/jpeg
やaudio/mpeg4-generic
など)。サブタイプにアスタリスク ワイルドカード(*
)を使用して、任意のサブタイプがマッチすることを示せます。インテント フィルタの
<data>
要素の宣言にandroid:mimeType
属性が含まれている場合、他に何も指定されていないのが一般的です。注: Android フレームワーク内の MIME タイプ マッチングの場合、正式な RFC MIME タイプとは異なり、大文字と小文字が区別されます。そのため、MIME タイプを指定する際は、常に小文字を使用してください。
- 導入時の API レベル:
- API レベル 1
- 関連項目:
<action>
<category>
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2024-06-21 UTC。
[]
[]
{
"last_modified": "最終更新日 2024-06-21 UTC。",
"state": ""
}