Configuração de pesquisa

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 define android: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:
ValorDescrição
"queryRewriteFromData" Use o valor do atributo SUGGEST_COLUMN_INTENT_DATA para reescrever o texto da consulta. Só deve ser usado quando os valores em SUGGEST_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. Consulte imeOptions 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 o selectionArgs e, em seguida, ignora o parâmetro selection).
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étodo SUGGEST_COLUMN_INTENT_ACTION , o valor é colocado no campo de ação da Intent 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 da Intent 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:
ValorDescriçã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:
ValorDescriçã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 de Locale.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. Usar EXTRA_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 ao ACTION_SEARCH que é transmitida para sua atividade de pesquisa. Para examinar o código-chave, use getIntExtra(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, use getStringExtra(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 seguinte android: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>