構文:
データタグが <intent-filter> の直属の子の場合:
<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" />

データタグが <uri-relative-filter-group> の直属の子の場合:
<data
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:fragment="string"
      android:fragmentPattern="string"
      android:fragmentPrefix="string"
      android:fragmentSuffix="string"
      android:fragmentAdvancedPattern="string"
      android:query="string"
      android:queryPattern="string"
      android:queryPrefix="string"
      android:querySuffix="string"
      android:queryAdvancedPattern="string" />
上位の要素:
<intent-filter>
<uri-relative-filter-group>
説明:
インテント フィルタにデータ指定を追加します。指定する内容は、データ型(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: の schema 属性が指定されていると想定されます。

: Android フレームワーク内のスキーマ マッチングの場合、RFC とは異なり、大文字と小文字が区別されます。そのため、スキーマを指定する際は、常に小文字を使用してください。

android:host
URI 認証局のホスト部分。フィルタに対して scheme 属性も指定されていないと、この属性は意味を持ちません。複数のサブドメインにマッチさせるには、アスタリスク(*)を使用して、ホスト内の 0 個以上の文字にマッチさせます。たとえばホスト *.google.com は、www.google.com.google.comdeveloper.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_LITERALPATTERN_PREFIXPATTERN_SIMPLE_GLOBPATTERN_SUFFIXPATTERN_ADVANCED_GLOB の説明をご覧ください。

これらの属性は、フィルタに対して scheme 属性と host 属性も指定している場合に限り、意味を持ちます。

pathSuffixpathAdvancedPattern は API レベル 31 で導入されました。

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

URI フラグメントのマッチング条件。接頭辞 # は含めないでください。各属性の意味と許可されるパターンについては、上記をご覧ください。

通常は URI エンコードされる文字と一致させるには、属性値に未加工(エンコードされていない)形式を含めます。たとえば、<data android:fragment="test!" />#test!#test%21 と一致します。

API レベル 35 で導入されました。

android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern

URI クエリ パラメータ(および必要に応じて値)のマッチング条件。たとえば、?param=value で終わる URI を <data android:query="param=value" /> と照合できます。接頭辞 ? は含めないでください。各属性の意味と許可されるパターンについては、上記をご覧ください。

通常は URI でエンコードされる文字と一致させるには、属性値に未加工(エンコードされていない)形式を含めます。たとえば、<data android:query="test!" />?test!?test%21 と一致します。

API レベル 35 で導入されました。

android:mimeType
MIME メディアタイプ(image/jpegaudio/mpeg4-generic など)。サブタイプにアスタリスク ワイルドカード(*)を使用して、任意のサブタイプがマッチすることを示せます。

インテント フィルタの <data> 要素の宣言に android:mimeType 属性が含まれている場合、他に何も指定されていないのが一般的です。

: Android フレームワーク内の MIME タイプ マッチングの場合、正式な RFC MIME タイプとは異なり、大文字と小文字が区別されます。そのため、MIME タイプを指定する際は、常に小文字を使用してください。

導入時の API レベル:
API レベル 1
関連項目:
<action>
<category>