2017-07-26 3 views
1

Mon application s'appelle MyNiceApp. MyNiceApp est principalement juste un noyau qui charge une vue CORE qui est peuplée par d'autres plugins que l'utilisateur télécharge comme le souhaite. Je définis les différentes zones de la vue principale qui peuvent être peuplées par les plugins via des interfaces dans MyNiceApp. Comment puis-je charger des applications qui implémentent ces interfaces via AIDL lorsque l'application démarre?Comment appeler les services AIDL au démarrage de l'application

Merci d'avance.

MISE À JOUR

Toute autre approche qui pourrait contribuer à la réalisation de cette fonctionnalité suffirait. Il ne doit pas seulement être implémentable via AIDL seulement.

Répondre

2

Appelez bindService() en utilisant un Intent explicite qui identifie le service exporté du plug-in.

Pour identifier les plugins existants, utilisez PackageManager et queryIntentServices() pour trouver toutes les applications ayant un service avec <intent-filter> associé à votre application. Confirmez que les applications qui implémentent les correspondances sont celles qu'elles prétendent être, via des contrôles de signature. Ensuite, vous pouvez utiliser le ResolveInfo de queryIntentServices() pour construire le Intent explicite pour la liaison.

This pair of sample apps démontre le processus de base. Dans mon cas, j'attends exactement un match, alors que vous attendez peut-être N matches.