Implementar a pesquisa com a ajuda do sistema Android, ou seja, fornecer recursos de consultas a uma atividade e fornecer sugestões de pesquisa. Seu aplicativo deve fornecer uma solicitação na forma de um arquivo XML.
Esta página descreve o arquivo de configuração de pesquisa em termos de sintaxe e uso. Para mais informações sobre como implementar recursos de pesquisa para seu aplicativo, consulte Crie uma interface de pesquisa.
- localização do arquivo:
-
res/xml/filename.xml
de
O Android usa o nome do arquivo como ID de recurso. - Sintaxe:
-
<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="string resource" android:hint="string resource" android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"] android:searchButtonText="string resource" android:inputType="
inputType
" android:imeOptions="imeOptions
" android:searchSuggestAuthority="string" android:searchSuggestPath="string" android:searchSuggestSelection="string" android:searchSuggestIntentAction="string" android:searchSuggestIntentData="string" android:searchSuggestThreshold="int" android:includeInGlobalSearch=["true" | "false"] android:searchSettingsDescription="string resource" android:queryAfterZeroResults=["true" | "false"] android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"] android:voiceLanguageModel=["free-form" | "web_search"] android:voicePromptText="string resource" android:voiceLanguage="string" android:voiceMaxResults="int" > <actionkey android:keycode="KEYCODE
" android:queryActionMsg="string" android:suggestActionMsg="string" android:suggestActionMsgColumn="string" /> </searchable> - elementos:
-
<searchable>
- Define todas as configurações de pesquisa usadas pelo sistema Android para oferecer a pesquisa assistida.
Atributos:
android:label
- Recurso de string. Obrigatório. Nome do seu app. Deve ser igual a
o nome aplicado ao atributo
android:label
da sua<activity>
ou<application>
elemento do manifesto. Este marcador só fica visível para o usuário quando você o defineandroid:includeInGlobalSearch
a"true"
. Nesse caso, esse rótulo é usado para identificar seu aplicativo como um item pesquisável nas configurações de pesquisa do sistema. android:hint
- Recurso de string. Recomendado. O texto a ser exibido no campo de texto de pesquisa quando
nenhum texto é inserido. Eles oferecem uma dica ao usuário sobre qual conteúdo pode ser pesquisado. Para manter a consistência
com outros apps Android, formate a string de
android:hint
como "Search". <content-or-product>". Por exemplo, "Pesquisar músicas e artistas". ou "Pesquisar no YouTube". android:searchMode
- Palavra-chave. Define modos suplementares que controlam a apresentação de pesquisa. Disponível
definem como o texto da consulta precisa ser reescrito quando uma sugestão personalizada recebe
foco. São aceitos os seguintes valores de modo:
Valor Descrição "queryRewriteFromData"
Use o valor do atributo SUGGEST_COLUMN_INTENT_DATA
para reescrever o texto da consulta. Só deve ser usado quando os valores emSUGGEST_COLUMN_INTENT_DATA
são adequados para inspeção e edição de usuários, como URIs HTTP."queryRewriteFromText"
Use o valor do atributo SUGGEST_COLUMN_TEXT_1
para reescrever o texto da consulta.Para obter mais informações, consulte a documentação sobre como reescrever o texto da consulta em Adicione sugestões de pesquisa personalizadas.
android:searchButtonText
- Recurso de string. Texto a ser exibido no botão que executa a pesquisa. De padrão, o botão mostra um ícone de pesquisa (uma lupa), ideal para internacionalização. Portanto, não use esse atributo para alterar o botão, a menos que o comportamento seja algo diferente de uma pesquisa, como uma solicitação de URL em um navegador da Web.
android:inputType
- Palavra-chave. Define o tipo de método de entrada a ser usado, como o tipo de
teclado. Esse atributo não é necessário na maioria das pesquisas em que texto de formato livre é esperado.
Consulte
inputType
para ver uma lista de valores adequados para este atributo. android:imeOptions
- Palavra-chave. Fornece outras opções para o método de entrada. Para a maioria das pesquisas, em
qual texto de formato livre é esperado, esse atributo não é necessário. O IME padrão é
actionSearch
, que fornece a função de "pesquisa" em vez de um retorno de carro na usando o teclado virtual. ConsulteimeOptions
para uma lista de valores adequados para esse atributo.
Atributos de sugestão de pesquisa
Se você definir um provedor de conteúdo para gerar sugestões de pesquisa, será preciso definir atributos adicionais que configuram a comunicação com o provedor de conteúdo. Ao fornecer recursos de pesquisa sugestões, você precisa de alguns dos seguintes atributos
<searchable>
:
android:searchSuggestAuthority
- String. Obrigatório para fornecer sugestões de pesquisa. Esse valor precisa corresponder ao
string de autoridade fornecida no
android:authorities
do elemento<provider>
do manifesto do Android. android:searchSuggestPath
- String. Esse caminho é usado como parte das sugestões
consulte
Uri
, após o prefixo e e antes do caminho de sugestões padrão. Isso só será necessário se você tiver um provedor de conteúdo único emitindo diferentes tipos de sugestões, como para diferentes tipos de dados diferentes, e você precisa de uma forma de eliminar a ambiguidade das consultas de sugestões ao receber para resolvê-los com rapidez. android:searchSuggestSelection
- String. Esse valor é transmitido à
função de consulta como o parâmetro
selection
. Normalmente, é uma cláusula WHERE para o seu banco de dados e deve conter um único ponto de interrogação como espaço reservado para o string de consulta real inserida pelo usuário, por exemplo,"query=?"
. No entanto, você também pode usar qualquer valor não nulo para acionar a entrega do texto da consulta usando oselectionArgs
e, em seguida, ignora o parâmetroselection
). android:searchSuggestIntentAction
- String. A ação de intent padrão a ser usada quando um usuário
toca em uma sugestão de pesquisa personalizada, como
"android.intent.action.VIEW"
. Se esse valor não for substituído pela sugestão selecionada usando o métodoSUGGEST_COLUMN_INTENT_ACTION
, o valor é colocado no campo de ação daIntent
quando o usuário toca uma sugestão. android:searchSuggestIntentData
- String. Os dados de intent padrão a serem usados quando um usuário
toca em uma sugestão
de pesquisa personalizada.
Se não for substituído pela sugestão selecionada, por meio do
SUGGEST_COLUMN_INTENT_DATA
coluna: este valor é colocado no campo de dados daIntent
quando o usuário toca uma sugestão. android:searchSuggestThreshold
- Número inteiro. O número mínimo de caracteres necessários para acionar uma pesquisa de sugestão. Isso garante apenas que o sistema não consulte as provedor de conteúdo para algo menor que o limite. O valor padrão é 0.
Para mais informações sobre os atributos acima para sugestões de pesquisa, consulte a documentação para adicionar sugestões de pesquisa personalizadas e como adicionar sugestões personalizadas.
Atributos da caixa de pesquisa rápida
Para disponibilizar suas sugestões de pesquisa personalizadas para a Caixa de pesquisa rápida, você precisa de alguns dos seguintes atributos
<searchable>
:
android:includeInGlobalSearch
- Booleano. (Obrigatório para fornecer sugestões de pesquisa na
Caixa de pesquisa rápida.) Defina como
"true"
se quiser que suas sugestões sejam incluídos na Caixa de pesquisa rápida acessível globalmente. O usuário precisa ainda ative seu aplicativo como um item pesquisável nas configurações de pesquisa do sistema antes de suas sugestões aparecerão na Caixa de pesquisa rápida. android:searchSettingsDescription
- Recurso de string. Fornece uma breve descrição das sugestões de pesquisa que que você fornecer à Caixa de pesquisa rápida, que é exibida na entrada de itens pesquisáveis do para o aplicativo. A descrição precisa descrever de maneira concisa o conteúdo pesquisável. Para exemplo, "Artistas, álbuns e faixas" para um aplicativo de música, ou em "Notas salvas" para um Bloco de notas do Google.
android:queryAfterZeroResults
- Booleano. Defina como
"true"
se quiser que o provedor de conteúdo seja invocado para superconjuntos de consultas que anteriormente não retornavam resultados. Por exemplo, se seu provedor de conteúdo retornar zero resultados para "bo", ele precisará ser consultado novamente para "bob". Se for definido como"false"
, os superconjuntos serão ignorados para uma única sessão ("bob"): não invoque uma nova consulta. Isso dura apenas durante a vida útil da caixa de diálogo de pesquisa ou da a atividade ao usar o widget de pesquisa. Quando a caixa de diálogo ou a atividade de pesquisa for reaberta, "bo" consultará seu provedor de conteúdo novamente. O valor padrão é "false".
Atributos de pesquisa por voz
Para ativar a pesquisa por voz, você precisa de alguns dos seguintes atributos
<searchable>
:
android:voiceSearchMode
- Palavra-chave. Obrigatório para fornecer recursos de pesquisa por voz.
Ativa a pesquisa por voz, com um modo específico para pesquisa por voz.
A pesquisa por voz pode não ser fornecida pelo dispositivo. Nesse caso, estas sinalizações
não têm efeito. São aceitos os seguintes valores de modo:
Valor Descrição "showVoiceSearchButton"
Exibe um botão de pesquisa por voz, se ele estiver disponível no dispositivo. Se definido, "launchWebSearch"
ou"launchRecognizer"
também precisam ser definidos, separados pelo caractere de barra vertical (|
)."launchWebSearch"
O botão de pesquisa por voz leva o usuário diretamente para uma atividade de pesquisa por voz integrada na Web. A maioria dos aplicativos não usa essa flag, ela afasta o usuário da atividade em que a pesquisa foi invocada. "launchRecognizer"
O botão de pesquisa por voz usa o usuário diretamente a uma atividade de gravação de voz integrada. Esta atividade solicita que o usuário fale, transcreve o texto falado e encaminha o resultado texto de consulta à atividade de pesquisa, como se o usuário tivesse digitado esse texto na e toquei no botão de pesquisa. android:voiceLanguageModel
- Palavra-chave. O modelo de linguagem que
precisa ser usado pelo sistema de reconhecimento de voz. São aceitos os seguintes valores:
Valor Descrição "free_form"
Usa reconhecimento de voz de forma livre para ditar consultas. Isso ocorre principalmente otimizada para inglês. Esse é o padrão. "web_search"
Usa reconhecimento de termos de pesquisa da Web para frases curtas, usadas em pesquisas. Isso é disponível em mais idiomas do que em "free_form"
.Consulte
EXTRA_LANGUAGE_MODEL
para mais informações imprecisas ou inadequadas. android:voicePromptText
- Recurso de string. Uma mensagem complementar a ser exibida na caixa de diálogo de entrada de texto por voz.
android:voiceLanguage
- String. O idioma falado esperado, expresso como o valor de string de
uma constante em
Locale
, como"de"
para alemão ou"fr"
para francês. Isso só será necessário se for diferente a partir do valor atual deLocale.getDefault()
. android:voiceMaxResults
- Número inteiro. Define o número máximo de resultados a serem retornados;
incluindo as "melhores" final, que é sempre fornecido como o
ACTION_SEARCH
principal da intent. Precisa ser 1 ou mais. UsarEXTRA_RESULTS
para receber os resultados da intent. Se não for fornecido, o reconhecedor escolherá quantos resultados devem ser retornados.
<actionkey>
- Define a chave e o comportamento do dispositivo para uma ação de pesquisa. Uma ação de pesquisa fornece uma
comportamento com o toque de um botão no dispositivo, com base na consulta atual ou em foco
sugestão. Por exemplo, o aplicativo Contatos fornece uma ação de pesquisa para iniciar uma chamada
para a sugestão de contato em foco no momento quando o botão "LIGAR" for tocado.
Nem todas as teclas de ação estão disponíveis em todos os dispositivos e nem todas podem ser substituídas neste de um jeito fácil. Por exemplo, "Casa" chave não pode ser substituída e precisa sempre retornar ao início tela. Além disso, não defina uma tecla de ação para uma tecla que é necessária para digitar uma pesquisa consulta. Isso limita as teclas de ação disponíveis e razoáveis ao botão de chamada e ao menu .
Defina o
android:keycode
para definir a chave e pelo menos um dos outros três atributos para definir a ação de pesquisa.Atributos:
android:keycode
- String. Obrigatório. Um código-chave
KeyEvent
, que representa a tecla de ação que você quer responder, por exemplo,"KEYCODE_CALL"
. Isso é adicionado aoACTION_SEARCH
que é transmitida para sua atividade de pesquisa. Para examinar o código-chave, usegetIntExtra(SearchManager.ACTION_KEY)
: Nem todas as teclas são compatíveis com uma ação de pesquisa, pois muitas delas são usadas para digitação, navegação ou funções do sistema. android:queryActionMsg
- String. Uma mensagem de ação a ser enviada se a tecla de ação for pressionada enquanto o
usuário está inserindo o texto da consulta. Ela é adicionada
ACTION_SEARCH
que o sistema transmite para sua atividade de pesquisa. Para examinar a string, usegetStringExtra(SearchManager.ACTION_MSG)
: android:suggestActionMsg
- String. Uma mensagem de ação a ser enviada se a tecla de ação for pressionada enquanto um
a sugestão de resposta está em foco. Ela é adicionada à intent que o sistema transmite ao seu
atividade pesquisável, usando a ação que você definir para a sugestão. Para examinar
string, use
getStringExtra(SearchManager.ACTION_MSG)
: Só será usado se todas as sugestões forem compatíveis com essa tecla de ação. Se não todos sugestões podem processar a mesma tecla de ação, use o seguinteandroid:suggestActionMsgColumn
. android:suggestActionMsgColumn
- String. O nome da coluna no seu provedor de conteúdo que define a
mensagem de ação para esta tecla de ação, que será enviada se o usuário pressionar a tecla de ação
enquanto uma sugestão está em foco. Esse atributo permite controlar a tecla de ação em um
sugestão a cada sugestão porque, em vez de usar a
android:suggestActionMsg
para definir a mensagem de ação para todos sugestões, cada entrada no provedor de conteúdo fornecerá sua própria mensagem de ação.Primeiro, você deve definir uma coluna em seu provedor de conteúdo para que cada sugestão forneça uma mensagem de ação e forneça o nome dessa coluna nesse atributo. O sistema analisa o cursor de sugestão usando a string fornecida aqui para selecionar sua ação coluna de mensagem e, em seguida, seleciona a string da mensagem de ação do cursor. Essa string é adicionado à intent que o sistema passa para sua atividade de pesquisa, usando a ação que você definir para sugestões. Para examinar a string, use
getStringExtra(SearchManager.ACTION_MSG)
: Se não existirem dados para a sugestão selecionada, a tecla de ação será ignorada.
- exemplo:
- Arquivo XML salvo em
res/xml/searchable.xml
:<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/search_label" android:hint="@string/search_hint" android:searchSuggestAuthority="dictionary" android:searchSuggestIntentAction="android.intent.action.VIEW" android:includeInGlobalSearch="true" android:searchSettingsDescription="@string/settings_description" > </searchable>