<data>

문법:
데이터 태그가 <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>

<intent-filter> 내부에 <data> 요소를 원하는 수만큼 배치하여 여러 데이터 옵션을 제공할 수 있습니다. 속성에 기본값은 없습니다.

인텐트 객체와 필터의 일치 방식에 적용되는 규칙을 포함하여 인텐트 필터의 작동 방식에 관한 자세한 내용은 인텐트 및 인텐트 필터와 매니페스트 파일 개요의 인텐트 필터 섹션을 참고하세요.

속성:
android:scheme
URI의 스키마 부분입니다. 이는 URI를 지정하기 위한 최소한의 필수 속성입니다. 필터에 scheme 속성을 하나 이상 설정해야 하며, 그러지 않으면 다른 URI 속성이 의미가 없습니다.

스키마는 후행 콜론 없이 지정됩니다(예: http: 대신 http).

필터에 데이터 유형(mimeType 속성 사용)이 설정되어 있지만 스키마는 설정되어 있지 않다면 content: 스키마와 file: 스키마로 가정됩니다.

참고: Android 프레임워크의 스키마 일치는 RFC와 달리 대소문자를 구분합니다. 따라서 항상 소문자를 사용하여 스키마를 지정합니다.

android:host
URI 권한의 호스트 부분입니다. 이 속성은 필터에 scheme 속성도 지정되어 있지 않으면 의미가 없습니다. 여러 하위 도메인을 일치시키려면 별표(*)를 사용하여 호스트에서 문자 0개 이상을 찾습니다. 예를 들어 호스트 *.google.comwww.google.com, .google.com, developer.google.com과 일치합니다.

별표는 호스트 속성의 첫 문자여야 합니다. 예를 들어 호스트 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 객체의 전체 경로와 일치하는 전체 경로를 지정하며, 다음의 정규식과 유사한 패턴을 지원합니다.

  • 마침표(.)는 모든 문자와 일치합니다.
  • 집합([...])은 문자 범위와 일치합니다. 예를 들어 [0-5]는 0부터 5까지의 한 자릿수와 일치하지만 6에서 9까지와는 일치하지 않습니다. [a-zA-Z]는 대소문자와 관계없이 모든 문자와 일치합니다. 집합은 'not' ^ 수정자도 지원합니다.
  • 별표(*) 수정자는 앞의 패턴과 0번 이상 일치합니다.
  • 더하기(+) 수정자는 앞의 패턴과 한 번 이상 일치합니다.
  • 범위({...}) 수정자는 패턴이 일치할 수 있는 횟수를 지정합니다.
pathAdvancedPattern 매처는 역추적 지원 없이 실시간으로 패턴의 일치를 확인하는 평가 구현입니다.

\는 XML에서 문자열을 읽을 때 이스케이프 문자로 사용되므로 패턴으로 파싱되기 전에 두 번 이스케이프 처리해야 합니다. 예를 들어 리터럴 *\\*로 작성되고 리터럴 \\\\로 작성됩니다. 이는 Java 코드로 문자열을 구성할 때 작성하는 것과 같습니다.

이러한 다섯 가지 유형의 패턴에 관한 자세한 내용은 PatternMatcher 클래스의 PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX, PATTERN_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/jpeg 또는 audio/mpeg4-generic). 하위유형은 모든 하위유형 일치를 나타내는 별표 와일드 카드(*)일 수 있습니다.

인텐트 필터는 일반적으로 android:mimeType 속성만 포함된 <data> 요소를 선언합니다.

참고: Android 프레임워크의 MIME 유형 일치는 정식 RFC MIME 유형과 달리 대소문자를 구분합니다. 따라서 항상 소문자를 사용하여 MIME 유형을 지정하세요.

도입 수준:
API 수준 1
참고 항목:
<action>
<category>