- cú pháp:
- Nếu thẻ dữ liệu là phần tử con trực tiếp của một
<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ínhport
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.
- Nếu không chỉ định
- 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ứccontent:
và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ớiwww.google.com
,.google.com
vàdeveloper.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
scheme
vàhost
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ínhpath
chỉ định một đường dẫn đầy đủ được so khớp với đường dẫn đầy đủ trong đối tượngIntent
. Thuộc tínhpathPrefix
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ượngIntent
.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ượngIntent
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ínhpathPattern
chỉ định đường dẫn đầy đủ được so khớp với đường dẫn đầy đủ trong đối tượngIntent
, 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ượngIntent
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.
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.Vì
\
đượ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à\\*
và\
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_SUFFIX
vàPATTERN_ADVANCED_GLOB
trong lớpPatternMatcher
.Chỉ khi nào các thuộc tính
scheme
vàhost
cũng được chỉ định cho bộ lọc thì các thuộc tính này mới có nghĩa.pathSuffix
vàpathAdvancedPattern
được ra mắt trong API cấp 31. - Dấu hoa thị (
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!
và#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!
và?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ặcaudio/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ínhandroid: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>
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2024-12-21 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2024-12-21 UTC."],[],[]]