Guía de desarrollo
Local Navigation
- Integración con aplicaciones de BlackBerry Device Software
- Búsqueda unificada
- Hacer que los datos puedan ser encontrados
- Definir una clase EntityBasedSearchable para sus objetos SearchableEntity.
- Encapsular datos en la clase SearchableEntity
- Specifying what users can do with your data in search results
- Registrar su objeto EntityBasedSearchable en el Servicio de búsqueda unificada
- Notificar al Servicio de búsqueda unificada acerca de los cambios hechos a sus datos
- Rastrear las respuestas del Servicio de búsqueda unificada
- Eliminar sus datos del repositorio de contenido
- Utilizar otros motores de búsqueda
- Asegurar que un dispositivo ejecuta una sola instancia de su aplicación
- Insertar datos al iniciar un dispositivo
- Búsquedas
- Compatibilidad de interacción de dispositivo
- Lista de mensajes
- Mensajes personalizados
- Archivos adjuntos
- Calendario
- Lista de contactos
- Lista de tareas
- Teléfono
- BlackBerry Browser
- Opciones de menú
- Obtener más información
- Glosario
- Comentarios
- Historial de revisión del documento
- Aviso legal
Documentación de producto
>
Documentación del desarrollador
>
Guías de desarrollo de Java y referencia de API
>
Guía de desarrollo
Integration Guide - BlackBerry Java SDK - 7.0
Definir una clase EntityBasedSearchable para sus objetos SearchableEntity.
Su implementación de la interfaz EntityBasedSearchable administra la relación entre el servicio de búsqueda unificada y las entidades que cree y se puedan buscar. Cada objeto EntityBasedSearchable administra un grupo de objetos SearchableEntity que tienen las mismas propiedades que se pueden buscar.
- Importe las clases y las interfaces necesarias.
import net.rim.device.api.unifiedsearch.SearchField; import net.rim.device.api.unifiedsearch.searchables.EntityBasedSearchable; import net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants; import net.rim.device.api.unifiedsearch.searchables.Searchable;
- Cree las variables de instancia para almacenar información que sea pertinente a su EntityBasedSearchable.
private MySearchableEntity[] _myEntities; // You will need this in steps 8 and 11 private long _registrationID; private SearchField[] _searchFields; private Image _icon; private final Object _monitor = new Object(); private boolean _wait = false;
- En el constructor, cree una matriz de objetos SearchField. Cada SearchField almacena el nombre de una propiedad de sus datos que se puede buscar. En el siguiente ejemplo de código, los objetos de datos de aplicación administrados por esta clase tienen tres propiedades que se pueden buscar. Por ejemplo, si los datos de su aplicación modelaron libros, estos campos pueden incluir el título, el editor y el número de páginas.
class MyEBS implements EntityBasedSearchable { _searchFields = new SearchField[3]; - Asigne un nombre significativo a cada SearchField.
_searchFields[0] = new SearchField("Title"); _searchFields[1] = new SearchField("Publisher"); _searchFields[2] = new SearchField("Number of pages"); } - Cree un icono que aparecerá en los resultados de búsqueda que incluyan las entidades que se pueden buscar administradas por EntityBasedSearchable. Para obtener más información acerca de crear iconos, consulte "Personalización de la apariencia de sus datos en los resultados de la búsqueda ".
- Implemente getType(). Devuelva el tipo de contenido que encaje mejor con los datos de su aplicación. Para ver una lista de tipos de contenido válidos, consulte la interfaz net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants en la referencia de la API.
public long getType() { return SearchableContentTypeConstants.CONTENT_TYPE_MEMO; - Elija los iniciadores de búsqueda que deben recibir resultados de búsqueda desde su aplicación. Para obtener más información acerca de la exposición de sus datos a las búsquedas, consulte la clase net.rim.device.api.unifiedsearch.entity.ExposureLevel en la referencia de la API.
public int getPrivacyLevel() { return ExposureLevel.LEVEL_PUBLIC; } - Implemente load(). Si el dispositivo BlackBerry está ocupado o el nivel de batería es bajo, puede que tenga que detener la operación de este método y reanudarlo cuando le sea solicitado.
- Para EntityBasedSearchable, determine cuántos objetos de datos existen actualmente en su aplicación.
public void load (NotificationListener observer, int loadType) { Vector myObjects = MyObjectManager.getDataObjects(); if (myObjects != null) { int size = myObjects.size() if(size < 1) { _myEntities = new MySearchableEntity[0]; } else { _myEntities = new MySearchableEntity[size]; } } else { // handle the condition where you have no data objects } - Utilice un bucle while para rellenar una matriz de entidades que se pueden buscar.
Enumeration objects = myObjects.elements(); int count = 0; while (objects.hasMoreElements()) { - Compruebe si el servicio de búsqueda unificada ha enviado un comando pause. Si es así, detenga la operación que rellena su matriz de entidades que se pueden buscar y notifíqueselo al Servicio.
if (_wait){ try { synchronized(_monitor) { observer.partiallyCompleted(this, null, NotificationListener.TYPE_SEARCHABLE); _monitor.wait(); } } catch (InterruptedException e){ observer.error(e); return; } } - Cuando su aplicación recupere el control del subproceso, continúe rellenando su matriz de entidades que se pueden buscar.
MyObject dataObject = (MyObject) objects.nextElement(); _myEntities[count++] = new MySearchableEntity(dataObject, this); } - Notifique al Servicio de búsqueda unificada cuando haya terminado de cargar sus datos.
observer.completed(this, NotificationListener.TYPE_SEARCHABLE); }
- Para EntityBasedSearchable, determine cuántos objetos de datos existen actualmente en su aplicación.
- En pause(), cambie el valor de la variable _wait a true. El Servicio de búsqueda unificada llama a este método cuando quiere que su aplicación deje de cargar datos.
public void pause() { _wait = true; } - En resume(), cambie el valor de la variable _wait a false. También, notifique al método load() que puede reanudar la ejecución. El servicio de búsqueda unificada invoca resume() cuando desea que su aplicación reanude los datos que carga.
public void resume() { _wait = false; synchronized(_monitor) { _monitor.notifyAll(); } } - En getSearchableEntities(), devuelva la matriz _myEntities que creó en el paso 8.
public SearchableEntity[] getSearchableEntities() { return _myEntities; }
- Personalizar la apariencia de sus datos en los resultados de la búsqueda
- Especificar un icono en EntityBasedSearchable o en la clase SearchableEntity
Tema anterior: Pasar consultas a otros motores de búsqueda
¿Le ha resultado útil esta información? Envíenos sus comentarios.