Configurar e iniciar uma pesquisa
Esta tarefa demonstra como iniciar uma pesquisa que é limitada às entidades pesquisáveis que seu aplicativo cria. O método UnifiedSearchServices.search() bloqueia a execução de thread, então doSearch() abaixo o invoca em um thread separado.
- Importe as classes e interfaces necessárias.
import net.rim.device.api.unifiedsearch.*;
import net.rim.device.api.unifiedsearch.searchables.*;
import java.util.*;
- Crie uma variável de instância para armazenar uma referência ao objeto UnifiedSearchServices.
public class MySearchScreen() {
UnifiedSearchServices _uss = UnifiedSearchServices.getInstance();
- Recupere uma referência a seu objeto EntityBasedSearchable e o atribua a uma variável de instância. Quando você recupera uma lista de aplicativos pesquisáveis no aparelho, altere o valor SearchableContentTypeConstants a um que seja apropriado para sua pesquisa. Certifique-se de tomar algum tipo de ação se o seu EntityBasedSearchable não for localizado no vetor deviceSearchables.
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
- Crie um método para iniciar a pesquisa. Aceite a palavra-chave de pesquisa como um parâmetro, onde seu aplicativo especifica as palavras-chave de pesquisa que o usuário do aparelho BlackBerry fornece. Este método invoca um novo thread, então declare o parâmetro String como final.
private void doSearch(final String keyword) {
- Crie o objeto Thread que executará sua pesquisa.
Thread searchThread = new Thread(new Runnable() {
public void run() {
try {
- Inicie a pesquisa e recupere os resultados, se houver. Se houver um resultado, envie-o a outro método para ser analisado.
SearchResponse results = null;
results = _uss.search(keyword, _searchable);
if(results != null) {
parseResponse(results);
}
- Pegue os erros que são gerados.
} catch (Exception e) {
// Do something about the error
}
- Conclua a definição Thread e execute-a.
}, "Search Thread");
searchThread.start();
Quando terminar:
Implemente
parseResponse. Para obter mais informações, consulte "Processar resultados de pesquisa".
Estas informações foram úteis? Gostaríamos de receber seus comentários.