<veriler>

söz dizimi:
Veri etiketi, bir <intent-filter> öğesinin doğrudan alt öğesiyse: <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" />

Veri etiketi, <uri-relative-filter-group> öğesinin doğrudan alt öğesiyse:
<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" />
içerdiği:
<intent-filter>
<uri-relative-filter-group>
description:
Bir intent filtresine veri spesifikasyonu ekler. Spesifikasyon, mimeType özelliğini kullanan bir veri türü, bir URI veya hem veri türü hem de URI'dir. URI, her bölümü için ayrı özelliklerle belirtilir:

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

URI biçimini belirten bu özellikler isteğe bağlıdır ancak birbirine bağlıdır:

  • Intent filtresi için scheme belirtilmemişse diğer tüm URI özellikleri yoksayılır.
  • Filtre için host belirtilmemişse port özelliği ve tüm yol özellikleri yoksayılır.

Aynı <intent-filter> öğesinde bulunan tüm <data> öğeleri aynı filtreye katkıda bulunur. Örneğin, aşağıdaki filtre spesifikasyonu:

<intent-filter . . . >
    <data android:scheme="something" android:host="project1.example.com" />
    <data android:scheme="something-else" android:host="project2.example.com" android:path="/page1" />
    ...
</intent-filter>

ile eş değerdir:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:scheme="something-else" />
    <data android:host="project1.example.com" />
    <data android:host="project2.example.com" />
    <data android:path="/page1" />
    ...
</intent-filter>

Birden fazla veri seçeneği sunmak için bir <data> öğesinin içine istediğiniz sayıda <intent-filter> yerleştirebilirsiniz. Özelliklerinin hiçbirinde varsayılan değer yok.

Amaç filtrelerinin işleyiş şekli (amaç nesnelerinin filtrelere göre nasıl eşleştirileceğiyle ilgili kurallar dahil) hakkında bilgi edinmek için Amaçlar ve Amaç Filtreleri ile manifest dosyası genel bakışındaki Amaç filtreleri bölümüne bakın.

özellikleri:
android:scheme
Bir URI'nin şema kısmı. Bu, URI belirtmek için gereken en temel özelliktir. Filtre için en az bir scheme özelliği ayarlanmalıdır. Aksi takdirde diğer URI özelliklerinin hiçbiri anlamlı olmaz.

Şema, sondaki iki nokta üst üste olmadan belirtiliyor. Örneğin, http: yerine http.

Filtrenin mimeType özelliği kullanılarak ayarlanmış bir veri türü varsa ancak şeması yoksa content: ve file: şemaları varsayılır.

Not: Android çerçevesindeki şema eşleştirme, RFC'nin aksine büyük/küçük harfe duyarlıdır. Bu nedenle, şemaları her zaman küçük harflerle belirtin.

android:host
URI yetkilisinin ana makine kısmı. Bu özellik, filtre için scheme özelliği de belirtilmediği sürece anlamsızdır. Birden fazla alt alan adını eşleştirmek için ana makinede sıfır veya daha fazla karakteri eşleştirmek üzere yıldız işareti (*) kullanın. Örneğin, *.google.com ana makinesi www.google.com, .google.com ve developer.google.com ile eşleşir.

Yıldız işareti, barındırıcı özelliğinin ilk karakteri olmalıdır. Örneğin, ana makine google.co.* geçersizdir. Bunun nedeni, yıldız işareti joker karakterinin ilk karakter olmamasıdır.

Not: Android çerçevesindeki ana makine adı eşleştirme, resmi RFC'nin aksine büyük/küçük harfe duyarlıdır. Bu nedenle, ana makine adlarını her zaman küçük harflerle belirtin.

android:port
URI yetkilisinin bağlantı noktası kısmı. Bu özellik yalnızca filtre için scheme ve host özellikleri de belirtilmişse anlamlıdır.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Bir URI'nin yol kısmı / ile başlamalıdır. path özelliği, Intent nesnesindeki tam yolla eşleşen tam bir yolu belirtir. pathPrefix özelliği, yalnızca Intent nesnesindeki yolun ilk kısmıyla eşleşen kısmi bir yolu belirtir.

pathSuffix özelliği, Intent nesnesindeki yolun son kısmıyla tam olarak eşleştirilir ve bu özelliğin / karakteriyle başlaması gerekmez.

pathPattern özelliği, Intent nesnesindeki tam yolla eşleşen tam bir yolu belirtir ancak aşağıdaki joker karakterleri içerebilir:

  • Nokta (.) herhangi bir tek karakterle eşleşir. Nokta karakterini eşleştirmek için XML'nizde \\. olarak kaçış karakterlerinin arasına alın.
  • Yıldız işareti (*), hemen önceki karakterin sıfır ile çok sayıda tekrarıyla eşleşir. Örneğin, a*, "a" ve "aa" ile eşleşir ancak boş bir dizeyle eşleşmez.
  • Nokta ve ardından gelen yıldız işareti (.*), sıfır veya daha fazla karakterden oluşan herhangi bir diziyle eşleşir. Örneğin, .* boş bir dizeyle, b.* ise "b", "bc" ve "bcd" ile eşleşir.

pathPattern ile ilgili önemli noktalar:

  • Geri İzleme Yok: Android'in desen eşleştiricisi, dizeleri geri izleme olmadan tek bir ileri geçişte değerlendirir. Bir joker karakter, daha sonra desende gerekli olan karakterleri kullanırsa eşleşme başarısız olur.
  • .* tembeldir: .* joker karakteri tembeldir. Kalıptaki bir sonraki değişmez karakterin ilk oluşumunu bulana kadar karakterleri tüketir.
    • "abc.*xyz", "abcpxqrxyz" ile eşleşmez. .*, ilk "x"'te ("px..."'den itibaren) geç durur. Kalan dize "qrxyz", beklenen "yz" ile eşleşmez.
    • Uyarı: .*, durdurmak için tam karakter eşleşmesi aradığından "a.*.c", "abbbc" ile eşleşmez. Eşleştirici, ikinci . karakterini gerçek bir nokta olarak değerlendirir ve dizeyi "." karakteri arayarak tarar. Dizinin sonuna ulaştığında eşleştirme başarısız olur.
  • * açgözlüdür: Yıldız işaretiyle (*) takip edilen belirli bir karakter (a* gibi) açgözlüdür. İleriye bakmadan bu karakterin tüm ardışık oluşumlarını tüketir.
    • "a*a", "aaa" gibi dizelerle eşleşmez. a* kısmı, üç "a"'yi de açgözlülükle tüketiyor. Daha sonra, kalıp son "a" karakterini bekler ancak dize zaten tükendiği için eşleşme başarısız olur.
  • En İyi Uygulamalar:
    • Bir * karakterinden hemen sonra gelen karakterin, bu karakterden önce gelen karakterle aynı olduğu (ör. a*a) kalıplardan kaçının.
    • Joker karakterleri .* işaretinden hemen sonra yerleştirmeyin (ör. .*. veya .*.*).
    • Bir öneki eşleştirmek istiyorsanız pathPattern ile .* ile bitirmek yerine android:pathPrefix kullanmak daha güvenli ve verimlidir.

pathAdvancedPattern özelliği, Intent nesnesinin tam yoluyla eşleşen ve aşağıdaki normal ifade benzeri kalıpları destekleyen tam bir yolu belirtir:

  • Nokta (.) herhangi bir karakterle eşleşir.
  • Küme ([...]), karakter aralıklarıyla eşleşir. Örneğin , [0-5] 0 ile 5 arasındaki tek bir rakamla eşleşir ancak 6 ile 9 arasındaki rakamlarla eşleşmez. [a-zA-Z] büyük/küçük harf ayrımı yapılmaksızın herhangi bir harfle eşleşir. Kümeler, "değil" ^ değiştiricisini de destekler.
  • Yıldız işareti (*) değiştiricisi, önceki kalıpla sıfır veya daha fazla kez eşleşir.
  • Artı (+) değiştiricisi, önceki kalıpla bir veya daha fazla kez eşleşir.
  • Aralık ({...}) değiştiricisi, bir kalıbın kaç kez eşleşebileceğini belirtir.
pathAdvancedPattern eşleştirici, eşleştirmenin geri izleme desteği olmadan anlık olarak kalıba göre yapıldığı bir değerlendirme uygulamasıdır.

\, dize XML'den okunurken kaçış karakteri olarak kullanıldığından, desen olarak ayrıştırılmadan önce çift kaçış yapmanız gerekir. Örneğin, * değişmezi \\* olarak, \ değişmezi ise \\\\ olarak yazılır. Bu, Java kodunda dize oluştururken yazdıklarınıza benzer.

Bu beş tür desen hakkında daha fazla bilgi için PatternMatcher sınıfındaki PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX ve PATTERN_ADVANCED_GLOB açıklamalarına bakın.

Bu özellikler yalnızca filtre için scheme ve host özellikleri de belirtilmişse anlamlıdır.

pathSuffix ve pathAdvancedPattern, API düzeyi 31'de kullanıma sunuldu.

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

URI parçası için eşleştirici. # önekini eklemeyin. Her bir özelliğin anlamı ve izin verilen kalıplar için yukarıya bakın.

Genellikle URI kodlaması yapılan karakterlerle eşleşmek için ham (kodlanmamış) biçimi özellik değerine ekleyin. Örneğin, <data android:fragment="test!" />, #test! ve #test%21 ile eşleşir.

API düzeyi 35'te kullanıma sunulmuştur.

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

Bir URI sorgu parametresi (ve isteğe bağlı olarak bir değer) için eşleştirici. Örneğin, ?param=value ile biten URI'leri <data android:query="param=value" /> ile eşleştirebilirsiniz. ? önekini eklemeyin. Her bir özelliğin anlamı ve izin verilen kalıplar için yukarıya bakın.

Genellikle URI kodlu olan karakterlerle eşleşmek için özellik değerine ham (kodlanmamış) biçimi ekleyin. Örneğin, <data android:query="test!" />, ?test! ve ?test%21 ile eşleşir.

API düzeyi 35'te kullanıma sunulmuştur.

android:mimeType
image/jpeg veya audio/mpeg4-generic gibi bir MIME medya türü. Alt tür, herhangi bir alt türün eşleştiğini belirtmek için yıldız işareti joker karakteri (*) olabilir.

Intent filtresinin yalnızca android:mimeType özelliğini içeren bir <data> öğesi bildirmesi yaygındır.

Not: Android çerçevesindeki MIME türü eşleştirme, resmi RFC MIME türlerinin aksine büyük/küçük harfe duyarlıdır. Bu nedenle, MIME türlerini her zaman küçük harflerle belirtin.

Tanıtıldığı oyun:
API düzeyi 1
Ayrıca:
<action>
<category>