2017-07-26 6 views
1

Meine App heißt MyNiceApp. MyNiceApp ist meistens nur ein Kern, der eine CORE Ansicht lädt, die durch andere Plugins gefüllt wird, die der Benutzer nach Wunsch herunterlädt. Ich definiere die verschiedenen Bereiche in der Kernansicht, die von den Plugins über Interfaces in MyNiceApp gefüllt werden können. Wie kann ich beim Start der App Apps laden, die diese Schnittstellen über AIDL implementieren?So rufen Sie die AIDL-Dienste beim App-Start auf

Vielen Dank im Voraus.

UPDATE

Jeder andere Ansatz, der diese Funktionalität genügen würde erreichen helfen könnte. Es muss nicht nur über AIDL implementierbar sein.

Antwort

2

Rufen Sie bindService() an, verwenden Sie eine explizite Intent, die den exportierten Dienst des Plugins identifiziert.

zu identifizieren, welche Plugins vorhanden ist, verwenden PackageManager und queryIntentServices() alle Apps zu finden, die einen Dienst mit einigen <intent-filter> gebunden, um Ihre Anwendung haben. Bestätigen Sie, dass die Apps, die die Matches implementieren, über Signaturen überprüft werden. Dann können Sie das ResolveInfo von queryIntentServices() verwenden, um das explizite Intent für das Binden zu erstellen.

This pair of sample apps zeigt den grundlegenden Prozess. In meinem Fall erwarte ich genau ein Spiel, während Sie vielleicht N Spiele erwarten.