- Sintaxe:
- Se a tag de dados for filha imediata de um
<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" />
Se a tag de dados for filha imediata de um<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" />
- contido em:
-
<intent-filter><uri-relative-filter-group> - descrição:
- Adiciona uma especificação de dados a um filtro de intent. A especificação é
um tipo de dados, usando o atributo
mimeType, um URI ou um tipo de dados e um URI. Um URI é especificado por atributos diferentes para cada uma das partes:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]Os atributos que especificam o formato de URI são opcionais, mas também mutuamente dependentes:
- Se um
schemenão for especificado para o filtro de intent, todos os outros atributos de URI serão ignorados. - Se um
hostnão for especificado para o filtro, o atributoporte todos os atributos de caminho serão ignorados.
Todos os elementos
<data>contidos no mesmo elemento<intent-filter>contribuem para o mesmo filtro. Por exemplo, a especificação de filtro abaixo:<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>
é equivalente a:
<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>
Você pode colocar quantos elementos
<data>quiser dentro de um<intent-filter>para dar várias opções de dados a ele. Nenhum dos atributos tem valores padrão.Para mais informações sobre como os filtros de intent funcionam, incluindo as regras de correspondência dos objetos de intent com os filtros, consulte Intents e filtros de intent e a seção Filtros de intent na visão geral do arquivo de manifesto.
- Se um
- atributos:
android:scheme- Parte do esquema de um URI. Esse é o atributo essencial mínimo para
especificar um URI. Pelo menos um atributo
schemeprecisa ser definido para o filtro. Caso contrário, nenhum dos outros atributos de URI será significativo.Um esquema é especificado sem os dois-pontos à direita, como
httpem vez dehttp:.Se o filtro tiver um tipo de dados definido (usando o atributo
mimeType) e nenhum esquema, os esquemascontent:efile:vão ser usados.Observação: a correspondência de esquemas no framework do Android diferencia maiúsculas de minúsculas, ao contrário do RFC. Como resultado, sempre especifique esquemas usando letras minúsculas.
android:host-
A parte do host de uma autoridade de URI. Esse atributo é insignificante,
a menos que um atributo
schemetambém seja especificado para o filtro. Use um asterisco (*) para corresponder a vários subdomínios e de zero a mais caracteres no host. Por exemplo, o host*.google.comcorresponde awww.google.com,.google.comedeveloper.google.com.O asterisco precisa ser o primeiro caractere do atributo do host. Por exemplo, o host
google.co.*é inválido porque o caractere curinga de asterisco não é o primeiro caractere.Observação: a correspondência do nome do host no framework do Android diferencia maiúsculas de minúsculas, ao contrário do RFC formal. Como resultado, sempre especifique nomes de host usando letras minúsculas.
android:port- A parte da porta de uma autoridade de URI. Esse atributo só é significativo
se os atributos
schemeehosttambém forem especificados para o filtro. android:pathandroid:pathPrefixandroid:pathSuffixandroid:pathPatternandroid:pathAdvancedPattern- A parte do caminho de um URI, que precisa começar com
/. O atributopathespecifica um caminho completo que corresponde ao caminho completo em um objetoIntent. O atributopathPrefixespecifica um caminho parcial que corresponde somente à parte inicial do caminho no objetoIntent.O atributo
pathSuffixcorresponde exatamente à parte final do caminho no objetoIntent, e esse atributo não precisa começar com o caractere/.O atributo
pathPatternespecifica um caminho completo que corresponde ao caminho completo no objetoIntente pode conter os caracteres curinga abaixo:-
Um ponto (
.) corresponde a qualquer caractere único. Para corresponder a um ponto literal, faça o escape dele como\\.no XML. -
Um asterisco (
*) corresponde a uma sequência de zero a várias ocorrências do caractere imediatamente anterior. Por exemplo,a*corresponde a "a" e "aa", mas não corresponde a uma string vazia. -
Um ponto seguido por um asterisco (
.*) corresponde a qualquer sequência de zero ou mais caracteres. Por exemplo,.*corresponde a uma string vazia, eb.*corresponde a "b", "bc" e "bcd".
Considerações importantes para
pathPattern:- Sem retrocesso: o matcher de padrões do Android avalia strings em uma única passagem direta sem retrocesso. Se um caractere curinga consumir caracteres necessários mais tarde no padrão, a correspondência vai falhar.
-
.*é preguiçoso:o caractere curinga.*é preguiçoso. Ele consome caracteres até encontrar a primeira ocorrência do próximo caractere literal no padrão.-
"abc.*xyz"não vai corresponder a"abcpxqrxyz". O.*para preguiçosamente no primeiro"x"(de"px..."). A string restante"qrxyz"não corresponde ao"yz"esperado. -
Aviso:como
.*procura uma correspondência exata de caracteres para parar,"a.*.c"**não** vai corresponder a"abbbc". O matcher trata o segundo.como um ponto literal e verifica a string procurando um".", falhando quando chega ao fim.
-
-
*é ganancioso: Um caractere específico seguido por um asterisco (comoa*) é ganancioso. Ele consome todas as ocorrências consecutivas desse caractere sem olhar para frente.-
"a*a"não vai corresponder a strings como"aaa". A partea*consome gananciosamente todos os três"a"s. O padrão espera o"a"final, mas a string já está esgotada, fazendo com que a correspondência falhe.
-
- Práticas recomendadas:
-
Evite padrões em que o caractere imediatamente após um
*seja o mesmo que o caractere anterior (por exemplo,a*a). -
Evite colocar caracteres curinga imediatamente após
.*(por exemplo,.*.ou.*.*). -
Se você pretende corresponder a um prefixo, é mais seguro e eficiente usar
android:pathPrefixem vez de terminar umpathPatterncom.*.
-
Evite padrões em que o caractere imediatamente após um
O atributo
pathAdvancedPatternespecifica um caminho completo, que corresponde ao caminho completo do objetoIntente oferece suporte a estes padrões parecidos com o regex:-
Um ponto (
.) faz correspondência com qualquer caractere. -
Um conjunto (
[...]) corresponde a intervalos de caracteres. Por exemplo,[0-5]corresponde a um único dígito de 0 a 5, mas não de 6 a 9.[a-zA-Z]corresponde a qualquer letra, independente de ser maiúscula ou minúscula. Os conjuntos também oferecem suporte ao modificador "not"^. -
O modificador de asterisco (
*) corresponde ao padrão anterior zero ou mais vezes. -
O modificador de adição (
+) corresponde ao padrão anterior uma ou mais vezes. -
O modificador de intervalo (
{...}) especifica o número de vezes que um padrão pode fazer correspondência.
pathAdvancedPatterné uma implementação de avaliação em que a correspondência com o padrão é realizada em tempo real e sem suporte a retrocessos.Como
\é usado como caractere de escape quando a string é lida do XML, antes de fazer a análise como padrão, você precisa do escape duplo. Por exemplo, um*literal é escrito como\\*e um\literal é escrito como\\\\. Isso é o que você escreve ao criar a string no código Java.Para mais informações sobre esses tipos de padrões, consulte as descrições de
PATTERN_LITERAL,PATTERN_PREFIX,PATTERN_SIMPLE_GLOB,PATTERN_SUFFIXePATTERN_ADVANCED_GLOBna classePatternMatcher.Esses atributos são significativos somente se os atributos
schemeehosttambém forem especificados para o filtro.pathSuffixepathAdvancedPatternforam introduzidos no nível 31 da API. -
Um ponto (
android:fragmentandroid:fragmentPrefixandroid:fragmentSuffixandroid:fragmentPatternandroid:fragmentAdvancedPattern-
Um matcher para um fragmento de URI. Não inclua o prefixo
#. Consulte acima o significado de e os padrões permitidos em cada atributo.Para corresponder a caracteres que geralmente são codificados por URI, inclua o formato bruto (não codificado) no valor do atributo. Por exemplo,
<data android:fragment="test!" />corresponde a#test!e#test%21.Introduzido no nível 35 da API.
android:queryandroid:queryPrefixandroid:querySuffixandroid:queryPatternandroid:queryAdvancedPattern-
Um matcher para um parâmetro de consulta de URI (e, opcionalmente, um valor). Por exemplo, é possível corresponder URIs que terminam em
?param=valuecom<data android:query="param=value" />. Não inclua o prefixo?. Consulte acima o significado de e os padrões permitidos em cada atributo.Para corresponder a caracteres que geralmente são codificados por URI, inclua o formato bruto (não codificado) no valor do atributo. Por exemplo,
<data android:query="test!" />corresponde a?test!e?test%21.Introduzido no nível 35 da API.
android:mimeType- Um tipo de mídia MIME, como
image/jpegouaudio/mpeg4-generic. O subtipo pode ser o asterisco curinga (*) para indicar que qualquer subtipo faz a correspondência.É comum que um filtro de intent declare um elemento
<data>que inclua somente o atributoandroid:mimeType.Observação: a correspondência de tipo MIME no framework do Android diferencia maiúsculas de minúsculas, ao contrário dos tipos RFC MIME formais. Como resultado, sempre especifique tipos MIME usando letras minúsculas.
- introduzido no:
- Nível 1 da API
- confira também:
<action><category>
<dados>
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2026-04-21 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2026-04-21 UTC."],[],[]]