Guide de développement
Local Navigation
- Intégration avec des applications BlackBerry Device Software
- Recherche unifiée
- Rendre les données détectables
- Définition d'une classe EntityBasedSearchable pour vos objets SearchableEntity
- Encapsulation de vos données dans la classe SearchableEntity
- Specifying what users can do with your data in search results
- Enregistrement de votre objet EntityBasedSearchable auprès du service de recherche unifiée
- Informer le service de recherche unifiée des modifications apportées à vos données
- Détection des réponses du service de recherche unifiée
- Suppression des données du référentiel de contenu
- Utilisation des autres moteurs de recherche
- Vérifier qu'un terminal n'exécute qu'une seule instance de votre application
- Insertion de données au démarrage d'un terminal
- Recherche
- Prise en charge de l'interaction du terminal
- Liste des messages
- Messages personnalisés
- Pièces jointes
- Calendrier
- Liste de contacts
- Liste des tâches
- Téléphone
- BlackBerry Browser
- Commandes de menu
- Pour plus d'informations
- Glossaire
- Envoi de commentaires
- Historique de révision du document
- Informations juridiques
Documentation produit
>
Documentation pour les développeurs
>
Guides de développement et référence API pour Java
>
Guide de développement
Integration - BlackBerry Java SDK - 7.0
Vérifier qu'un terminal n'exécute qu'une seule instance de votre application
Pour améliorer l'efficacité de votre application, assurez-vous que le terminal BlackBerry n'exécute qu'une seule instance lorsque search() est appelé dans votre implémentation de ExternalSearchProvider.
- Dans votre implémentation de ExternalSearchProvider, importez les packages qui vous aideront à identifier les applications s'exécutant sur le terminal.
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;
- Dans search(), récupérez un identificateur pour votre application.
public void search(String keywords) { int modHandle = CodeModuleManager.getModuleHandle("MyApplication"); - Récupérez un tableau d'objets qui représentent les applications qui s'exécutent sur le terminal.
ApplicationDescriptor[] allApps = ApplicationManager.getApplicationManager().getVisibleApplications();
- Examinez chaque élément du tableau pour déterminer si votre application s'exécute sur le terminal.
for(int i = allApps.length -1; i >= 0; --i) { if(allApps[i].getModuleHandle() == modHandle) { - Si votre application s'exécute, envoyez-lui les mots-clés de recherche. Appelez postGlobalEvent() pour envoyer à votre application un message devant afficher un écran avec les résultats des nouveaux mots-clés. Vous devez détecter un événement global posté dans votre GUID dans le constructeur de votre application.
int procID = ApplicationManager.getApplicationManager().getProcessId(allApps[i]); ApplicationManager.getApplicationManager().postGlobalEvent(procID, your application's GUID, 0, 0, keywords, null); } } - Si votre application n'est pas en cours d'exécution sur le terminal, récupérez un objet ApplicationDescriptor représentant votre application.
ApplicationDescriptor[] myAppDes = CodeModuleManager.getApplicationDescriptors(modHandle);
- Démarrez votre application. Transmettez les mots-clés de recherche sous forme d'argument. Dans le constructeur de votre application, vous devez détecter s'il existe un argument qui contient les mots-clés de recherche.
try { ApplicationManager.getApplicationManager().runApplication(new ApplicationDescriptor(myAppDes[0], new String[]{keywords})); } catch(ApplicationManagerException e) { // Process the error condition } } } - Dans votre classe d'application, importez le package net.rim.device.api.system.GlobalEventListener pour écouter les événements globaux.
import net.rim.device.api.system.GlobalEventListener;
- Importez la classe UiApplication.
import net.rim.device.api.ui.UiApplication;
- Enregistrez votre application pour détecter les événements globaux, comme celui que vous avez créé à l'étape 5, et affichez votre premier écran.
public class MySearchProviderApp extends UiApplication implements GlobalEventListener { public MySearchProviderApp(String searchKeywords) { addGlobalEventListener(this); pushScreen(new MySearchScreen(searchKeywords)); } - Implémentez eventOccured() pour répondre aux événements globaux.
public void eventOccurred(long guid, int data0, int data1, Object object0, Object object1) { - Si votre application s'exécute sur le terminal, fermez l'écran actuel et affichez un autre écran.
if(guid == G53DDE84S97JHVEK390) { if(object0 instanceof String) { popScreen(); pushScreeen(new MySearchScreen((String) object0)); requestForeground(); } } } - Testez les mots-clés de recherche dans les arguments de la méthode main. Démarrez votre application avec les mots-clés donnés, ou avec une chaîne vide si aucun mots-clé n'est donné.
public static void main(String[] args) { String searchKeywords = ""; if(args != null && args.length > 0) { searchKeywords = args[0]; } MySearchProviderApp app = new MySearchProviderApp(searchKeywords); app.enterEventDispatcher(); } }
Sujet suivant: Insertion de données au démarrage d'un terminal
Sujet précédent: Utilisation des autres moteurs de recherche
Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.