Guia do desenvolvedor
Local Navigation
- Integração com aplicativos BlackBerry Device Software Device Software
- Pesquisa unificada
- Tornar os dados localizáveis
- Definir uma classe EntityBasedSearchable para seus objetos SearchableEntity
- Encapsular os dados na classe SearchableEntity
- Specifying what users can do with your data in search results
- Registrar seu objeto EntityBasedSearchable no serviço de pesquisa unificada
- Notificar o serviço de pesquisa unificada sobre alterações nos dados
- Escutar respostas do serviço de pesquisa unificada
- Remover dados do repositório de conteúdo
- Usar outros mecanismos de busca
- Certificar-se de que um aparelho execute uma única instância de seu aplicativo
- Inserir dados quando um aparelho é iniciado
- Pesquisar
- Suporte à interação do aparelho
- Lista de mensagens
- Mensagens personalizadas
- Anexos
- Calendário
- Lista de contatos
- Lista de tarefas
- Telefone
- BlackBerry Browser
- Itens de menu
- Mais informações
- Glossário
- Enviar comentários
- Histórico da revisão de documentos
- Aviso legal
Documentação do produto
>
Documentação do desenvolvedor
>
Guias de desenvolvimento Java e referência de API
>
Guia do desenvolvedor
Integration Guide - BlackBerry Java SDK - 7.0
Certificar-se de que um aparelho execute uma única instância de seu aplicativo
Para melhorar a eficiência de seu aplicativo, você deve certificar-se de que o aparelho BlackBerry execute apenas uma instância quando search() for invocado em sua implementação de ExternalSearchProvider.
- Em sua implementação de ExternalSearchProvider, importe pacotes que o ajudarão a descobrir quais aplicativos são executados no aparelho.
import net.rim.device.api.system.ApplicationDescriptor; import net.rim.device.api.system.ApplicationManager; import net.rim.device.api.system.ApplicationManagerException; import net.rim.device.api.system.CodeModuleManager;
- Em search(), recupere um controle para seu aplicativo.
public void search(String keywords) { int modHandle = CodeModuleManager.getModuleHandle("MyApplication"); - Recupere uma matriz de objetos que representam os aplicativos executados no aparelho.
ApplicationDescriptor[] allApps = ApplicationManager.getApplicationManager().getVisibleApplications();
- Examine cada elemento da matriz para determinar se o seu aplicativo é executado no aparelho.
for(int i = allApps.length -1; i >= 0; --i) { if(allApps[i].getModuleHandle() == modHandle) { - Se o seu aplicativo estiver sendo executado, envie as palavras-chave de pesquisa a ele. Invoque postGlobalEvent() para enviar ao seu aplicativo uma mensagem de que ele deve exibir uma tela com os resultados para as novas palavras-chave. Você deve detectar um evento global que é publicado para seu GUID no construtor do aplicativo.
int procID = ApplicationManager.getApplicationManager().getProcessId(allApps[i]); ApplicationManager.getApplicationManager().postGlobalEvent(procID, your application's GUID, 0, 0, keywords, null); } } - Se o seu aplicativo não estiver sendo executado no aparelho, recupere um objeto ApplicationDescriptor que representa seu aplicativo.
ApplicationDescriptor[] myAppDes = CodeModuleManager.getApplicationDescriptors(modHandle);
- Inicie seu aplicativo. Passe as palavras-chave de pesquisa como um argumento. No construtor do aplicativo, você deve detectar se há um argumento que contém palavras-chave de pesquisa.
try { ApplicationManager.getApplicationManager().runApplication(new ApplicationDescriptor(myAppDes[0], new String[]{keywords})); } catch(ApplicationManagerException e) { // Process the error condition } } } - Na classe do aplicativo, importe o pacote net.rim.device.api.system.GlobalEventListener para escutar eventos globais.
import net.rim.device.api.system.GlobalEventListener;
- Importe a classe UiApplication.
import net.rim.device.api.ui.UiApplication;
- Registre o aplicativo para escutar eventos globais, como o que você criou na etapa 5 e exiba a primeira tela.
public class MySearchProviderApp extends UiApplication implements GlobalEventListener { public MySearchProviderApp(String searchKeywords) { addGlobalEventListener(this); pushScreen(new MySearchScreen(searchKeywords)); } - Implemente eventOccured() para responder a eventos globais.
public void eventOccurred(long guid, int data0, int data1, Object object0, Object object1) { - Se o seu aplicativo estiver sendo executado no aparelho, feche a tela existente e exiba outra tela.
if(guid == G53DDE84S97JHVEK390) { if(object0 instanceof String) { popScreen(); pushScreeen(new MySearchScreen((String) object0)); requestForeground(); } } } - Teste as palavras-chave de pesquisa nos argumentos para o método main. Inicie seu aplicativo com as palavras-chave que são fornecidas ou com uma string vazia se nenhuma palavra-chave estiver disponível.
public static void main(String[] args) { String searchKeywords = ""; if(args != null && args.length > 0) { searchKeywords = args[0]; } MySearchProviderApp app = new MySearchProviderApp(searchKeywords); app.enterEventDispatcher(); } }
Próximo tópico: Inserir dados quando um aparelho é iniciado
Tópico anterior: Usar outros mecanismos de busca
Estas informações foram úteis? Gostaríamos de receber seus comentários.