- syntax:
- 
        <uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group> 
- contenuti in:
- 
        <intent-filter>
- può contenere:
- 
        <data>
- description:
- 
        Crea regole di corrispondenza Intentprecise che possono includere parametri di query e frammenti URI. Le regole possono essere di inclusione (allow) o di esclusione (blocking), a seconda dell'attributoandroid:allow. Le regole di corrispondenza sono specificate dagli attributipath*,fragment*equery*degli elementi<data>contenuti.Corrispondenza Per trovare una corrispondenza con un URI, ogni parte del gruppo di filtri relativi all'URI deve corrispondere a una parte dell'URI. Possono essere presenti parti dell'URI non specificate nel gruppo di filtri relativo all'URI. Ad esempio: <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> Il filtro corrisponde https://project.example.com/any/path/here?param1=value1¶m2=value2¶m3=value3perché è presente tutto ciò che è specificato dal gruppo di filtri relativo all'URI. Il filtro corrisponde anche ahttps://project.example.com/any/path/here?param2=value2¶m1=value1perché l'ordine dei parametri di query non è importante. Tuttavia, il filtro non corrispondehttps://project.example.com/any/path/here?param1=value1, a cui mancaparam2=value2.OR e AND I tag <data>all'esterno di un<uri-relative-filter-group>sono OR, mentre i tag<data>all'interno di un<uri-relative-filter-group>sono AND.Considera l'esempio seguente: <intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <data android:pathPrefix="/prefix" /> <data android:pathSuffix="suffix" /> ... </intent-filter> Il filtro corrisponde ai percorsi che iniziano con /prefixOPPURE terminano consuffix.Al contrario, l'esempio seguente corrisponde ai percorsi che iniziano con /prefixe terminano consuffix:<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> Di conseguenza, più attributi pathnello stesso<uri-relative-filter-group>non corrispondono a nulla:<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> Ordine di dichiarazione Considera l'esempio seguente: <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> Il filtro corrisponde al frammento #fragmentperché viene trovata una corrispondenza prima della valutazione della regola di esclusione, ma i frammenti come#fragment123non corrispondono.Tag fratelli I tag <uri-relative-filter-group>funzionano insieme ai tag<data>fratelli (ovvero i tag<data>al di fuori del<uri-relative-filter-group>, ma all'interno dello stesso<intent-filter>). I tag<uri-relative-filter-group>devono avere tag<data>fratelli per funzionare correttamente perché gli attributi URI sono mutuamente dipendenti a livello di<intent-filter>:- Se per il filtro intent non viene specificato un valore scheme, tutti gli altri attributi URI vengono ignorati.
- Se per il filtro non viene specificato un valore host, l'attributoporte tutti gli attributipath*vengono ignorati.
 I figli <data>di un<intent-filter>vengono valutati prima di qualsiasi tag<uri-relative-filter-group>. Poi i tag<uri-relative-filter-group>vengono valutati in ordine, ad esempio:<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> Il filtro accetta https://project.example.com/path?queryperché corrisponde a<data android:path="/path" />, che non rientra nella regola di esclusione<uri-relative-filter-group>.Caso d'uso comune Immagina di avere l'URI https://project.example.com/path, che vuoi associare a unIntenta seconda della presenza o del valore di un parametro di query. Per creare un filtro intent che corrisponda ahttps://project.example.com/pathe blocchihttps://project.example.com/path?query, puoi provare qualcosa di simile a:<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> In realtà, non funziona. L'URI https://project.example.com/path?querycorrisponde al percorso/pathe il tag<uri-relative-filter-group>consente parti extra durante la corrispondenza.Modifica il filtro per intent come segue: <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> Questo filtro funziona perché le regole di blocco che vietano i parametri di query non vuoti vengono valutate per prime. Per semplificare il codice, inverti il comportamento in modo da consentire i parametri di query e bloccare gli URI senza parametri di query: <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> Caratteri codificati in formato URI Per trovare una corrispondenza con gli URI contenenti caratteri codificati, scrivi i caratteri non codificati nel filtro, ad esempio: <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> Il filtro corrisponde a ?param=value!e?param=value%21.Tuttavia, se nel filtro scrivi i caratteri codificati come segue: <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> Il filtro non corrisponde né a ?param=value!né a?param=value%21.Numero di elementi Puoi inserire un numero illimitato di elementi <uri-relative-filter-group>all'interno di un<intent-filter>.Altre risorse Per informazioni sul funzionamento dei filtri per intent, incluse le regole per la corrispondenza degli oggetti intent ai filtri, consulta Intent e filtri per intent e Filtri per intent. Per informazioni su <uri-relative-filter-group>, consultaUriRelativeFilterGroupeUriRelativeFilter.
- Se per il filtro intent non viene specificato un valore 
- attributes:
- 
        - android:allow
- 
            Indica se questo gruppo di filtri relativo all'URI è una regola di inclusione (consenti) anziché una regola di esclusione (blocco). Il valore predefinito è "true".Valore Descrizione "true"(valore predefinito)Se il gruppo di filtri relativi all'URI corrisponde, il filtro per intent corrisponde "false"Se il gruppo di filtri relativi all'URI corrisponde, il filtro per intent non corrisponde 
 
- introdotto in:
- Livello API 35
- Vedi anche:
- 
        <intent-filter><data>
      <uri-relative-filter-group>
  
  
  I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
  
  
    
      [null,null,["Ultimo aggiornamento 2025-07-27 UTC."],[],[]]
    
  
            
          