- söz dizimi:
-
<uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group>
- Şunlarda bulunur:
-
<intent-filter> - Şunları içerebilir:
-
<data> - description:
-
URI sorgu parametreleri ve URI parçaları içerebilecek hassas
Intenteşleme kuralları oluşturur. Kurallar,android:allowözelliğine bağlı olarak dahil etme (izin verme) veya hariç tutma (engelleme) kuralları olabilir. Eşleştirme kuralları, dahil edilen<data>öğelerininpath*,fragment*vequery*özellikleri tarafından belirtilir.Eşleşme
Bir URI ile eşleşmek için URI'ye göre filtre grubunun her bir bölümünün URI'nin bir kısmıyla eşleşmesi gerekir. URI'nin, URI'ye göre filtre grubunda belirtilmeyen bölümleri olabilir. Örnek:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param1=value1" /> <data android:query="param2=value2" /> </uri-relative-filter-group> ... </intent-filter>
URI'ye göreli filtre grubu tarafından belirtilen her şey mevcut olduğu için filtre,
https://project.example.com/any/path/here?param1=value1¶m2=value2¶m3=value3ile eşleşir. Sorgu parametrelerinin sırası önemli olmadığı için filtre,https://project.example.com/any/path/here?param2=value2¶m1=value1ile de eşleşir. Ancak filtre,param2=value2eksik olanhttps://project.example.com/any/path/here?param1=value1ile eşleşmiyor.VEYA ve VE
<uri-relative-filter-group>dışındaki<data>etiketleri OR işlemine tabi tutulurken<uri-relative-filter-group>içindeki<data>etiketleri AND işlemine tabi tutulur.Aşağıdaki örneği inceleyin:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <data android:pathPrefix="/prefix" /> <data android:pathSuffix="suffix" /> ... </intent-filter>
Filtre,
/prefixile başlayan VEYAsuffixile biten yollarla eşleşir.Buna karşılık, aşağıdaki örnek
/prefixile başlayan VEsuffixile biten yollarla eşleşir:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:pathPrefix="/prefix" /> <data android:pathSuffix="suffix" /> </uri-relative-filter-group> ... </intent-filter>
Sonuç olarak, aynı
<uri-relative-filter-group>alanındaki birden fazlapathözelliği hiçbir şeyle eşleşmez:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:path="/path1" /> <data android:path="/path2" /> </uri-relative-filter-group> ... </intent-filter>
Beyan sırası
Aşağıdaki örneği inceleyin:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:fragment="fragment" /> </uri-relative-filter-group> <uri-relative-filter-group android:allow="false"> <data android:fragmentPrefix="fragment" /> </uri-relative-filter-group> ... </intent-filter>
Hariç tutma kuralı değerlendirilmeden önce bir eşleşme bulunduğu için filtre,
#fragmentfragmanıyla eşleşir ancak#fragment123gibi fragmanlar eşleşmez.Kardeş etiketler
<uri-relative-filter-group>etiketleri, kardeş<data>etiketleriyle birlikte çalışır (yani,<uri-relative-filter-group>dışında ancak aynı<intent-filter>içinde bulunan<data>etiketleri). URI özellikleri<intent-filter>düzeyinde birbirine bağlı olduğundan<uri-relative-filter-group>etiketlerinin düzgün çalışması için kardeş<data>etiketleri olmalıdır:- Intent filtresi için bir
schemebelirtilmezse diğer tüm URI özellikleri yoksayılır. - Filtre için bir
hostbelirtilmezseportözelliği ve tümpath*özellikleri yok sayılır.
Bir
<intent-filter>'un<data>alt hesapları, tüm<uri-relative-filter-group>etiketlerinden önce değerlendirilir. Ardından<uri-relative-filter-group>etiketleri sırayla değerlendirilir. Örneğin:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="false"> <data android:path="/path" /> <data android:query="query" /> </uri-relative-filter-group> <data android:path="/path" /> ... </intent-filter>
Filtre,
<uri-relative-filter-group>hariç tutma kuralının dışındaki<data android:path="/path" />ile eşleştiği içinhttps://project.example.com/path?querydeğerini kabul eder.Yaygın kullanım alanı
Bir sorgu parametresinin varlığına veya değerine bağlı olarak
https://project.example.com/pathURI'niz olduğunu ve bu URI'yiIntentile eşleştirmek istediğinizi varsayalım.https://project.example.com/pathile eşleşen vehttps://project.example.com/path?query'u engelleyen bir intent filtresi oluşturmak için aşağıdaki gibi bir ifadeyi deneyebilirsiniz:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> </uri-relative-filter-group> ... </intent-filter>
Bu aslında işe yaramaz.
https://project.example.com/path?queryURI'si,/pathyolunu eşleştirir ve<uri-relative-filter-group>etiketi, eşleşirken ek parçalara izin verir.Intent filtresini aşağıdaki şekilde düzeltin:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="false"> <data android:path="/path" /> <data android:queryAdvancedPattern=".+" /> </uri-relative-filter-group> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> </uri-relative-filter-group> ... </intent-filter>
Bu filtre, boş olmayan sorgu parametrelerini yasaklayan engelleme kurallarının önce değerlendirilmesi nedeniyle çalışır.
Kodu basitleştirmek için davranışı, sorgu parametrelerine izin verecek ve sorgu parametresi olmayan URI'leri engelleyecek şekilde değiştirin:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> <data android:queryAdvancedPattern=".+" /> </uri-relative-filter-group> ... </intent-filter>
URI kodlamalı karakterler
URI kodlamalı karakterler içeren URI'leri eşleştirmek için filtreye ham, kodlanmamış karakterleri yazın. Örneğin:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param=value!" /> </uri-relative-filter-group> ... </intent-filter>
Filtre,
?param=value!ve?param=value%21ile eşleşiyor.Ancak filtreye kodlanmış karakterleri aşağıdaki gibi yazarsanız:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param=value%21" /> </uri-relative-filter-group> ... </intent-filter>
Filtre,
?param=value!veya?param=value%21ile eşleşmiyor.Öğe sayısı
Bir
<intent-filter>içine dilediğiniz sayıda<uri-relative-filter-group>öğesi yerleştirebilirsiniz.Ek kaynaklar
Intent nesnelerinin filtrelerle eşleşme kuralları da dahil olmak üzere intent filtrelerinin işleyiş şekli hakkında bilgi edinmek için Intent'ler ve Intent Filtreleri ile Intent Filtreleri başlıklı makaleleri inceleyin.
<uri-relative-filter-group>hakkında bilgi edinmek içinUriRelativeFilterGroupveUriRelativeFilterbaşlıklı makaleleri inceleyin. - Intent filtresi için bir
- özellikleri:
-
android:allow-
Bu URI'ye göreli filtre grubunun, hariç tutma (engelleme) kuralı yerine dahil etme (izin verme) kuralı olup olmadığı. Varsayılan değer:
"true".Değer Açıklama "true"(varsayılan)URI'ye göre filtre grubu eşleşirse intent filtresi de eşleşir "false"URI'ye göreli filtre grubu eşleşirse intent filtresi eşleşmez
- kullanıma sunulduğu sürüm:
- API düzeyi 35
- Ayrıca:
-
<intent-filter><data>
<uri-relative-filter-group>
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[]]