Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Búsqueda universal

Android 8.0 agrega capacidades de búsqueda expandidas para el menú Configuración . Este documento describe cómo agregar una configuración y asegurarse de que esté indexada correctamente para la búsqueda de Configuración.

Creando configuraciones indexables

Cada fragmento de configuración que debe indexarse ​​implementa la interfaz Indexable Y requiere el campo estático:

public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER

Una vez que haya configurado su fragmento para la indexación, agréguelo a SearchIndexableResources encuentra en:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java

Métodos opcionales

Esta interfaz SearchIndexProvider tiene cuatro métodos opcionales.

getXmlResourcesToIndex

  • Anule esto si el contenido de su fragmento es de: preference xml
  • Devuelve una preferencia XML como una lista para indexar.

Ejemplo de recursos XML:

public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) {
    ArrayList<SearchIndexableResource> result =  new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
	sir.xmlResId = R.xml.display_settings;
	result.add(sir);

    return result;
}

getRawDataToIndex

  • Anule esto si el contenido de su fragmento NO es de: preference xml
  • Devuelve una lista de datos sin procesar ( SearchIndexableRaw ) para indexar.

Ejemplo de datos sin procesar:

public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
              final List<SearchIndexableRaw> result = new ArrayList<>();
              final Resources res = context.getResources();

              // Add fragment title
       SearchIndexableRaw data = new SearchIndexableRaw(context);
       data.title = res.getString(R.string.wifi_settings);
       data.screenTitle = res.getString(R.string.wifi_settings);
       data.keywords = res.getString(R.string.keywords_wifi);
       data.key = DATA_KEY_REFERENCE;
       result.add(data);

       return result;
}

getNonIndexableKeys

  • Si su fragmento es un DashboardFragment , rara vez necesita anularlo.
  • Devuelve una lista de claves que corresponde a los resultados que no deberían aparecer para el usuario, dispositivo, configuración, etc. dados. Las claves proporcionadas aquí deberían coincidir con el campo KEY en SearchIndexableResource y SearchIndexableRaw .
  • Por ejemplo: el uso de datos no debería aparecer para los usuarios que nunca han tenido una tarjeta SIM en su dispositivo.

Ejemplo de claves no indexables:

public List<String> getNonIndexableKeys(Context context) {
      final List<String> keys = super.getNonIndexableKeys(context);
              if (!checkIntentAction(context, "android.settings.TERMS")) {
                  keys.add(KEY_TERMS);
              }
              if (!checkIntentAction(context, "android.settings.LICENSE")) {
                  keys.add(KEY_LICENSE);
              }
              if (!checkIntentAction(context, "android.settings.COPYRIGHT")) {
                  keys.add(KEY_COPYRIGHT);
              }
              if (!checkIntentAction(context, "android.settings.WEBVIEW_LICENSE")) {
                  keys.add(KEY_WEBVIEW_LICENSE);
              }
              return keys;
}

getPreferenceControllers

Devuelve una lista de controladores de preferencias asociados con este fragmento. Esta lista se utiliza para formar resultados en línea, actualizar no indexables, etc.

Por lo tanto, todo lo que desee que aparezca en la búsqueda debe incluirse en getXmlResourcesToIndex o getRawDataToIndex .

Agregar palabras clave para su configuración

Para asegurarse de que se pueda buscar fácilmente una configuración, agregue palabras clave que sean relevantes para la configuración que un usuario puede usar para buscar la configuración.

Cosas a considerar al agregar palabras clave:

  • Las palabras clave son una lista de palabras que el usuario no ve necesariamente, pero que pueden ser parte de su modelo mental de cómo funciona el entorno.
  • Estas son palabras que el usuario puede escribir para llegar a su configuración.
  • Pueden ser sinónimos o se puede utilizar cualquier palabra asociada al entorno.
  • Por ejemplo, "mute" podría usarse para encontrar la configuración de Volumen.

Evitando la duplicación

Si está suprimiendo incondicionalmente una página de configuración, elimine la indexación de la página original para evitar la duplicación de resultados.

  1. Busque el PreferenceFragment de la página que está suprimiendo.
  2. Quite el SearchIndexProvider .

Validación

Para probar la capacidad de búsqueda de una nueva configuración:

  1. Instale una versión reciente de O en el dispositivo.
  2. Vuelva a indexar la base de datos seleccionando:
  3. Configuración> Aplicaciones y notificaciones> Información de aplicaciones> Configuración> Almacenamiento> Borrar datos
  4. Verifique que la configuración de destino aparezca en la búsqueda.
    La búsqueda de un prefijo del título de una configuración coincidirá con él.

Estas pruebas roboeléctricas se pueden ejecutar para validar la implementación de esta función:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

El objetivo de la compilación es: RunSettingsRoboTests