Konfigurieren und Starten einer Suche
Diese Aufgabe demonstriert, wie Sie eine Suche starten, die auf die von Ihrer Anwendung erstellten suchbaren Entitäten begrenzt ist. Die UnifiedSearchServices.search()-Methode blockiert die Threadausführung. Daher ruft doSearch() sie nachfolgend in einem separaten Thread auf.
- Importieren Sie die erforderlichen Klassen und Schnittstellen.
import net.rim.device.api.unifiedsearch.*;
import net.rim.device.api.unifiedsearch.searchables.*;
import java.util.*;
- Erstellen Sie eine Instanzvariable, um einen Hinweis auf das UnifiedSearchServices-Objekt zu speichern.
public class MySearchScreen() {
UnifiedSearchServices _uss = UnifiedSearchServices.getInstance();
- Rufen Sie einen Hinweis auf das EntityBasedSearchable-Objekt ab, und weisen Sie es einer Instanzvariablen zu. Wenn Sie eine Liste suchbarer Anwendungen auf dem Gerät abrufen, ändern Sie den SearchableContentTypeConstants-Wert in einen für Ihre Suche geeigneten Wert. Stellen Sie sicher, dass eine bestimmte Maßnahme ergriffen wird, wenn EntityBasedSearchable nicht im deviceSearchables-Vektor gefunden wird.
MySearchable _searchable = null;
Vector deviceSearchables = _uss.getDeviceSearchables(SearchableContentTypeConstants.CONTENT_TYPE_MEMO);
for(int i = deviceSearchables.size() -1; i >=0; --i) {
if(deviceSearchables.elementAt(i).getName().equals("name of your searchable")) {
_searchable = (MySearchable) deviceSearchables.elementAt(i);
}
}
// Do something if _searchable is still null
- Erstellen Sie eine Methode, um die Suche zu starten. Übernehmen Sie das Suchwort als Parameter, an dem Ihre Anwendung die Suchwörter festlegt, die der BlackBerry-Gerätebenutzer eingibt. Diese Methode ruft einen neuen Thread auf. Deklarieren Sie daher den String-Parameter als final.
private void doSearch(final String keyword) {
- Erstellen Sie das Thread-Objekt, das Ihre Suche ausführen soll.
Thread searchThread = new Thread(new Runnable() {
public void run() {
try {
- Starten Sie die Suche, und rufen Sie die Ergebnisse ab (falls zutreffend). Wenn ein Ergebnis vorliegt, senden Sie es zur Analyse an eine andere Methode.
SearchResponse results = null;
results = _uss.search(keyword, _searchable);
if(results != null) {
parseResponse(results);
}
- Zeichnen Sie aufgetretene Fehler auf.
} catch (Exception e) {
// Do something about the error
}
- Schließen Sie die Thread-Definition ab, und führen Sie sie aus.
}, "Search Thread");
searchThread.start();
Nach Abschluss erforderliche Aktion:
Implementieren Sie
parseResponse. Weitere Informationen finden Sie unter "Bearbeiten von Suchergebnissen".
Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.