Para implementar la búsqueda con la asistencia del sistema Android, es decir, para ofrecer búsquedas consultas a una actividad y proporcionar sugerencias de búsqueda, tu aplicación debe proporcionar configuración en forma de archivo XML.
En esta página, se describe el archivo de configuración de búsqueda en cuanto a su sintaxis y su uso. Para ver más sobre cómo implementar funciones de búsqueda para tu aplicación, consulta Crea una interfaz de búsqueda.
- ubicación del archivo:
res/xml/filename.xml
Android usa el nombre de archivo como ID de recurso.- sintaxis:
-
<?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 las configuraciones de búsqueda utilizadas por el sistema Android para proporcionar búsquedas asistidas.
Atributos:
android:label
- Recurso de cadenas. (Obligatorio). El nombre de tu aplicación. Debe ser igual a
el nombre aplicado al atributo
android:label
de tu<activity>
o<application>
. Esta etiqueta solo es visible para el usuario cuando la estableces Deandroid:includeInGlobalSearch
a"true"
, en cuyo caso, se usa esta etiqueta para identificar tu aplicación como un elemento de búsqueda en la configuración de búsqueda del sistema. android:hint
- Recurso de cadenas. (Recomendado). El texto que se mostrará en el campo de texto de búsqueda cuando
no se ingresa texto. Proporciona una sugerencia al usuario sobre qué contenido se puede buscar. Para mantener la coherencia
con otras aplicaciones para Android, establece el formato de la cadena de
android:hint
como "Buscar <content-or-product>”. Por ejemplo, "Buscar canciones y artistas" o “Buscar en YouTube”. android:searchMode
- Palabra clave. Establece modos adicionales que controlan la presentación de búsqueda. Disponibles
definen cómo se debe reescribir el texto de la consulta cuando una sugerencia personalizada recibe
no te enfocas en eso. Se aceptan los siguientes valores de modo:
Valor Descripción "queryRewriteFromData"
Usa el valor de SUGGEST_COLUMN_INTENT_DATA
para reescribir el texto de la bquery. Solo debe usarse cuando los valores deSUGGEST_COLUMN_INTENT_DATA
son adecuados para la inspección y edición de los usuarios. como URI de HTTP."queryRewriteFromText"
Usa el valor de SUGGEST_COLUMN_TEXT_1
para reescribir el texto de la consulta.Para obtener más información, consulta la documentación sobre cómo reescribir el texto de la consulta en Agrega sugerencias de búsqueda personalizadas.
android:searchButtonText
- Recurso de cadenas. El texto que se mostrará en el botón que ejecuta la búsqueda. De De forma predeterminada, el botón muestra un ícono de búsqueda (una lupa), que es ideal para internacionalización. Por lo tanto, no uses este atributo para cambiar el botón, a menos que el comportamiento sea algo que no sea una búsqueda, como una solicitud de URL en un navegador web.
android:inputType
- Palabra clave. Define el tipo de método de entrada a usar, como el tipo de software
teclado. Para la mayoría de las búsquedas, en las que se espera texto de formato libre, no es necesario este atributo.
Consulta
inputType
para ver una lista de valores adecuados para este atributo. android:imeOptions
- Palabra clave. Proporciona opciones adicionales para el método de entrada. Para la mayoría de las búsquedas, en
qué texto de formato libre se espera, no es necesario este atributo. El IME predeterminado es
actionSearch
, que proporciona la "búsqueda" en lugar de un retorno de carro en la teclado en pantalla. ConsultaimeOptions
para obtener una lista de valores adecuados para este atributo.
Atributos de sugerencias de búsqueda
Si defines un proveedor de contenido para generar sugerencias de búsqueda, debes definir atributos adicionales que configuran las comunicaciones con el proveedor de contenido. Al proporcionar la búsqueda sugerencias, necesitarás algunos de los siguientes atributos
<searchable>
:
android:searchSuggestAuthority
- String. (Obligatorio para proporcionar sugerencias de búsqueda). Este valor debe coincidir con el
string de autoridad proporcionada en el archivo
android:authorities
del elemento<provider>
del manifiesto de Android. android:searchSuggestPath
- String. Esta ruta se usa como parte de las sugerencias.
consulta
Uri
, después del prefijo y autoridad y antes de la ruta de sugerencias estándar. Esto solo es necesario si tienes un único proveedor de contenido que emite distintos tipos de sugerencias, como para diferentes y necesitas una forma de desambiguar las consultas de sugerencias cuando recibas de ellos. android:searchSuggestSelection
- String. Este valor se pasa a tu
la función de consulta como el parámetro
selection
. Por lo general, esta es una cláusula WHERE para tu base de datos y debe contener un solo signo de interrogación como marcador de posición para el la cadena de consulta real ingresada por el usuario, por ejemplo,"query=?"
. Sin embargo, también puedes usar cualquier valor no nulo para activar la entrega del texto de la consulta usando elselectionArgs
y, luego, ignora el parámetroselection
). android:searchSuggestIntentAction
- String. La acción de intent predeterminada que se usará cuando un usuario
presiona una sugerencia de búsqueda personalizada, como
"android.intent.action.VIEW"
. Si la sugerencia seleccionada no anula este valor mediante elSUGGEST_COLUMN_INTENT_ACTION
por columna, el valor se coloca en el campo de acción de laIntent
cuando el usuario presiona una sugerencia. android:searchSuggestIntentData
- String. Los datos de intents predeterminados que se usarán cuando un usuario
presiona una sugerencia de búsqueda personalizada.
Si la sugerencia seleccionada no la anula, a través de la
SUGGEST_COLUMN_INTENT_DATA
este valor se coloca en el campo de datos de laIntent
cuando el usuario presiona una sugerencia. android:searchSuggestThreshold
- Entero. La cantidad mínima de caracteres necesaria para activar una búsqueda de sugerencias. Esto solo garantiza que el sistema no consulte proveedor de contenido por un período inferior al umbral. El valor predeterminado es 0.
Si deseas obtener más información sobre los atributos anteriores para las sugerencias de búsqueda, consulta la documentación para agregar sugerencias de búsqueda personalizadas y agregar sugerencias personalizadas.
Atributos del cuadro de búsqueda rápida
Para que las sugerencias de búsqueda personalizadas estén disponibles en el cuadro de búsqueda rápida, necesitas algunas de las los siguientes atributos
<searchable>
:
android:includeInGlobalSearch
- Booleano. (Obligatorio para proporcionar sugerencias de búsqueda en la
cuadro de búsqueda rápida). Configúralo en
"true"
si deseas que se muestren tus sugerencias incluidos en el cuadro de búsqueda rápida de acceso global. El usuario debe habilitar tu aplicación como un elemento de búsqueda en la configuración de búsqueda del sistema antes tus sugerencias aparecen en el cuadro de búsqueda rápida. android:searchSettingsDescription
- Recurso de cadenas. Proporciona una breve descripción de las sugerencias de búsqueda que que proporcionas en el cuadro de búsqueda rápida, que aparece en la entrada de elementos de búsqueda de tu y mantener la integridad de su aplicación. La descripción debe describir de manera concisa el contenido que se puede buscar. Para por ejemplo, "Artistas, álbumes y pistas" para una aplicación de música o "Notas guardadas" durante un aplicación de bloc de notas.
android:queryAfterZeroResults
- Booleano. Configúralo en
"true"
si quieres que sea el proveedor de contenido se invoca para superconjuntos de consultas que antes no mostraron ningún resultado. Por ejemplo, tu proveedor de contenido no devuelve resultados para "bo" y se debe solicitar para "bob". Si Si se establece en"false"
, se ignoran los superconjuntos para una sola sesión: "bob". no invoca una consulta nueva. Esto dura toda la vida del diálogo de búsqueda o la vida de la actividad al usar el Widget de la Búsqueda. Cuando se vuelve a abrir el diálogo o la actividad de búsqueda, “bo” consulta tu proveedor de contenido nuevamente. El valor predeterminado es falso.
Atributos de búsqueda por voz
Para habilitar la búsqueda por voz, necesitas algunas de las los siguientes atributos
<searchable>
:
android:voiceSearchMode
- Palabra clave. (Obligatorio para proporcionar funcionalidades de búsqueda por voz).
Habilita la búsqueda por voz con un modo específico para la búsqueda por voz.
Es posible que el dispositivo no proporcione la búsqueda por voz, en cuyo caso estas marcas
que no tengan ningún efecto. Se aceptan los siguientes valores de modo:
Valor Descripción "showVoiceSearchButton"
Muestra un botón de búsqueda por voz si esta función está disponible en el dispositivo. Si se establece, entonces también se debe establecer "launchWebSearch"
o"launchRecognizer"
separadas por el carácter de barra vertical (|
)."launchWebSearch"
El botón de búsqueda por voz lleva al usuario directamente en una actividad de búsqueda web por voz integrada. La mayoría de las aplicaciones no usa esta marca, ya que aleja al usuario de la actividad en la que se invocó la búsqueda. "launchRecognizer"
El botón Búsqueda por voz lleva al usuario directamente a una actividad de grabación de voz integrada. Esta actividad Solicita al usuario que hable, transcribe el texto hablado y reenvía el resultado consulta la actividad de búsqueda, como si el usuario lo escribiera en la y presionaste el botón de búsqueda. android:voiceLanguageModel
- Palabra clave. El modelo de lenguaje que
debe ser utilizado por el sistema de reconocimiento de voz. Se aceptan los siguientes valores:
Valor Descripción "free_form"
Usa el reconocimiento de voz de formato libre para dictar consultas. Esto es principalmente optimizado para inglés. Es el valor predeterminado. "web_search"
Usa el reconocimiento de término de búsqueda web para frases más cortas similares a búsquedas. Este es disponible en más idiomas que "free_form"
.Consulta
EXTRA_LANGUAGE_MODEL
para ver más información. android:voicePromptText
- Recurso de cadenas. Un mensaje adicional para mostrar en el diálogo de entrada de voz.
android:voiceLanguage
- String. El idioma hablado que se espera, expresado como el valor de cadena de
una constante en
Locale
, como"de"
para alemán o"fr"
para francés. Solo es necesario si es diferente. del valor actual deLocale.getDefault()
. android:voiceMaxResults
- Entero. Establece el número máximo de resultados que se mostrarán.
incluyendo el "mejor" resultado, que siempre se proporciona
ACTION_SEARCH
la consulta principal del intent. Debe ser 1 o mayor. UsaEXTRA_RESULTS
para obtener los resultados del intent. Si no se proporciona, el reconocedor elige cuántos resultados mostrar.
<actionkey>
- Define una tecla de dispositivo y un comportamiento para una acción de búsqueda. Una acción de búsqueda proporciona un elemento
con solo presionar un botón en el dispositivo, según la consulta actual o
sugerencia. Por ejemplo, la aplicación Contactos proporciona una acción de búsqueda para iniciar un teléfono
llamada a la sugerencia de contacto enfocado actualmente cuando se presiona el botón de LLAMADA.
No todas las teclas de acción están disponibles en todos los dispositivos ni todas las teclas se pueden anular en esta de una nueva manera. Por ejemplo, "Casa" la tecla no se puede anular y siempre debe volver a la pantalla principal en la pantalla. Además, asegúrate de no definir una tecla de acción para una tecla que se necesita al escribir una búsqueda. para cada búsqueda. Esto limita las teclas de acción disponibles y razonables del botón de llamada y el menú .
Debes definir el
android:keycode
para definir la clave y al menos uno de los otros tres atributos para definir la acción de búsqueda.Atributos:
android:keycode
- String. (Obligatorio). Un código clave de
KeyEvent
que representa la tecla de acción a la que deseas responder, por ejemplo,"KEYCODE_CALL"
. Esta se agrega alACTION_SEARCH
intent que se pasa a la actividad de búsqueda. Para examinar el código de tecla, usagetIntExtra(SearchManager.ACTION_KEY)
No todas las teclas son compatibles con una acción de búsqueda, ya que muchas de ellas se utilizan para escribir, navegación o funciones del sistema. android:queryActionMsg
- String. Un mensaje de acción que se enviará si se presiona la tecla de acción mientras el botón
el usuario está ingresando el texto de la consulta. Este se agrega al
ACTION_SEARCH
que el sistema pasa a tu actividad de búsqueda. Para examinar la cadena, usagetStringExtra(SearchManager.ACTION_MSG)
android:suggestActionMsg
- String. Un mensaje de acción que se enviará si se presiona la tecla de acción mientras una
que la sugerencia esté en primer plano. Esto se agrega al intent que el sistema pasa a tu
de búsqueda, con la acción que defines para la sugerencia. Para examinar la
cadena, usa
getStringExtra(SearchManager.ACTION_MSG)
Solo debe usarse si todas tus sugerencias admiten esta tecla de acción. Si no todas las sugerencias pueden manejar la misma tecla de acción, entonces debes usar la siguiente atributoandroid:suggestActionMsgColumn
. android:suggestActionMsgColumn
- String. El nombre de la columna de tu proveedor de contenido que define la
mensaje de acción para esta tecla de acción, que se enviará si el usuario presiona la tecla de acción
mientras una sugerencia está en foco. Este atributo permite controlar la tecla de acción en un
sugerencia por sugerencia, porque, en lugar de usar el
El atributo
android:suggestActionMsg
para definir el mensaje de acción para todos sugerencias, cada entrada de tu proveedor de contenido proporciona su propio mensaje de acción.Primero, debes definir una columna en tu proveedor de contenido para cada sugerencia que proporciones un mensaje de acción y, luego, proporciona el nombre de esa columna en este atributo. El sistema mira tu cursor de sugerencias y usa la cadena proporcionada aquí para seleccionar la acción y, luego, selecciona la cadena de mensaje de acción del cursor. Esa cadena es se agrega al intent que el sistema pasa a tu actividad de búsqueda, usando la acción que definir para las sugerencias. Para examinar la cadena, usa
getStringExtra(SearchManager.ACTION_MSG)
Si no existen datos para la sugerencia seleccionada, se ignora la tecla de acción.
- ejemplo:
- Archivo en formato XML guardado en
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>