<data>

cú pháp:
Nếu thẻ dữ liệu là thẻ con trực tiếp của <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" />

Nếu thẻ dữ liệu là thẻ con trực tiếp của <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" />
có trong:
<intent-filter>
<uri-relative-filter-group>
nội dung mô tả:
Thêm thông số kỹ thuật dữ liệu vào bộ lọc ý định. Thông số kỹ thuật là một loại dữ liệu, sử dụng thuộc tính mimeType, URI hoặc cả loại dữ liệu và URI. URI được các thuộc tính riêng biệt cho từng phần của URI đó chỉ định:

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]

Các thuộc tính chỉ định định dạng URI này là không bắt buộc, nhưng cũng phụ thuộc lẫn nhau:

  • Nếu không chỉ định scheme cho bộ lọc ý định thì mọi thuộc tính URI khác sẽ bị bỏ qua.
  • Nếu không chỉ định host cho bộ lọc thì thuộc tính port và mọi thuộc tính đường dẫn sẽ bị bỏ qua.

Tất cả các phần tử <data> chứa trong cùng phần tử <intent-filter> đều đóng góp vào cùng bộ lọc. Vì vậy, thông số kỹ thuật của bộ lọc sau:

<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    ...
</intent-filter>

sẽ tương đương với đoạn mã như sau:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:host="project.example.com" />
    ...
</intent-filter>

Bạn có thể đặt bất kỳ số lượng phần tử <data> nào vào bên trong <intent-filter> để cung cấp nhiều tuỳ chọn dữ liệu. Không có thuộc tính nào của bộ lọc này có giá trị mặc định.

Để biết thông tin về cách hoạt động của bộ lọc ý định, bao gồm cả quy tắc về cách so khớp đối tượng ý định với bộ lọc, hãy xem bài viết Ý định và bộ lọc ý định cũng như phần Ý định bộ lọc trên trang tổng quan về tệp kê khai.

thuộc tính:
android:scheme
Phần giao thức của URI. Đây là thuộc tính thiết yếu tối thiểu để chỉ định URI. Bạn phải đặt ít nhất một thuộc tính scheme cho bộ lọc, nếu không, sẽ không có thuộc tính URI nào khác có ý nghĩa.

Giao thức được chỉ định mà không có dấu hai chấm theo sau, chẳng hạn như http thay vì http:.

Nếu bộ lọc có tập hợp loại dữ liệu (sử dụng thuộc tính mimeType) nhưng không có giao thức nào, thì giao thức content:file: sẽ được sử dụng.

Lưu ý: Việc so khớp giao thức trong khung Android có phân biệt chữ hoa chữ thường, không giống như RFC. Do đó, hãy luôn chỉ định giao thức bằng chữ cái viết thường.

android:host
Phần máy chủ lưu trữ của đơn vị quản lý URI. Chỉ khi nào thuộc tính scheme cũng được chỉ định cho bộ lọc thì thuộc tính này mới có nghĩa. Để so khớp nhiều miền con, hãy sử dụng dấu hoa thị (*) nhằm so khớp với ký tự số không hoặc nhiều ký tự khác trong máy chủ lưu trữ. Ví dụ: máy chủ lưu trữ *.google.com khớp với www.google.com, .google.comdeveloper.google.com.

Dấu hoa thị phải là ký tự đầu tiên của thuộc tính máy chủ lưu trữ. Ví dụ: máy chủ lưu trữ google.co.* không hợp lệ vì ký tự đại diện dấu hoa thị không phải là ký tự đầu tiên.

Lưu ý: Việc so khớp tên máy chủ lưu trữ trong khung Android có phân biệt chữ hoa chữ thường, khác với RFC chính thức. Do đó, hãy luôn chỉ định tên máy chủ bằng chữ cái viết thường.

android:port
Phần cổng của đơn vị quản lý URI. Chỉ khi nào thuộc tính schemehost cũng được chỉ định cho bộ lọc thì thuộc tính này mới có nghĩa.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Phần đường dẫn của URI, phải bắt đầu bằng /. Thuộc tính path chỉ định một đường dẫn đầy đủ được so khớp với đường dẫn đầy đủ trong đối tượng Intent. Thuộc tính pathPrefix chỉ định một phần đường dẫn chỉ được so khớp với phần đầu của đường dẫn trong đối tượng Intent.

Thuộc tính pathSuffix được so khớp chính xác với phần cuối của đường dẫn trong đối tượng Intent và thuộc tính này không nhất thiết phải bắt đầu bằng ký tự /. Thuộc tính pathPattern chỉ định đường dẫn đầy đủ được so khớp với đường dẫn đầy đủ trong đối tượng Intent, nhưng có thể chứa các ký tự đại diện sau:

  • Dấu hoa thị (*) khớp một chuỗi từ 0 lần xuất hiện đến nhiều lần xuất hiện của ký tự đứng ngay trước đó.
  • Dấu chấm theo sau là dấu hoa thị (.*) khớp với mọi chuỗi từ 0 ký tự đến nhiều ký tự.

Thuộc tính pathAdvancedPattern chỉ định đường dẫn đầy đủ được so khớp với đường dẫn đầy đủ của đối tượng Intent và hỗ trợ các mẫu giống biểu thức chính quy sau:

  • Dấu chấm (.) khớp với ký tự bất kỳ.
  • Tập hợp ([...]) khớp với các khoảng ký tự. Ví dụ: [0-5] khớp với một chữ số từ 0 đến 5 nhưng không khớp với chữ số từ 6 đến 9. [a-zA-Z] khớp với mọi chữ cái, bất kể cách viết hoa. Các tập hợp cũng hỗ trợ đối tượng sửa đổi "không phải" là ^.
  • Đối tượng sửa đổi dấu hoa thị (*) khớp với mẫu trước đó từ 0 lần trở lên.
  • Đối tượng sửa đổi dấu cộng (+) khớp với mẫu trước đó từ 1 lần trở lên.
  • Đối tượng sửa đổi khoảng ({...}) chỉ định số lần mẫu có thể khớp.
Trình so khớp pathAdvancedPattern là một cách triển khai hoạt động đánh giá, trong đó quá trình khớp được thực hiện dựa trên mẫu theo thời gian thực mà không hỗ trợ theo dõi ngược.

\ được dùng làm ký tự thoát khi chuỗi được đọc bằng XML, nên bạn sẽ cần dùng 2 ký tự thoát trước khi chuỗi được phân tích cú pháp ở dạng mẫu. Ví dụ: * cố định sẽ được viết là \\*\ cố định sẽ được viết là \\\. Nội dung này tương tự như nội dung bạn cần viết khi xây dựng chuỗi trong đoạn mã Java.

Để biết thêm thông tin về 5 loại mẫu này, hãy xem phần mô tả về PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIXPATTERN_ADVANCED_GLOB trong lớp PatternMatcher.

Chỉ khi nào các thuộc tính schemehost cũng được chỉ định cho bộ lọc thì các thuộc tính này mới có nghĩa.

pathSuffixpathAdvancedPattern được ra mắt trong API cấp 31.

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

Trình so khớp cho một mảnh URI. Không bao gồm tiền tố #. Hãy xem phần trên để biết ý nghĩa và các mẫu được phép trong từng thuộc tính.

Để so khớp các ký tự thường được mã hoá URI, hãy đưa dạng thô (chưa mã hoá) vào giá trị thuộc tính. Ví dụ: <data android:fragment="test!" /> khớp với #test!#test%21.

Ra mắt trong API cấp 35.

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

Trình so khớp cho tham số truy vấn URI (và tuỳ chọn là một giá trị). Ví dụ: bạn có thể so khớp các URI có đuôi là ?param=value với <data android:query="param=value" />. Không bao gồm tiền tố ?. Hãy xem phần trên để biết ý nghĩa và các mẫu được phép trong từng thuộc tính.

Để so khớp các ký tự thường được mã hoá URI, hãy đưa dạng thô (chưa mã hoá) vào giá trị thuộc tính. Ví dụ: <data android:query="test!" /> khớp với ?test!?test%21.

Ra mắt trong API cấp 35.

android:mimeType
Kiểu nội dung nghe nhìn MIME, ví dụ: image/jpeg hoặc audio/mpeg4-generic. Kiểu phụ có thể là ký tự đại diện dấu hoa thị (*) để cho biết rằng mọi kiểu phụ đều khớp.

Thông thường, bộ lọc ý định sẽ khai báo phần tử <data> chỉ bao gồm thuộc tính android:mimeType.

Lưu ý: Việc so khớp loại MIME trong khung Android có phân biệt chữ hoa chữ thường, không giống như các loại MIME RFC chính thức. Do đó, hãy luôn chỉ định loại MIME bằng chữ cái viết thường.

ra mắt từ:
API cấp 1
xem thêm:
<action>
<category>