2016-05-25 11 views
2

Ich möchte eine Android-Bibliothek mit einem versteckten gestarteten Dienst innerhalb entwickeln, die nicht von dem App-Entwickler, der die Bibliothek verwendet, gesehen werden soll.nicht in der Lage, einen privaten Dienst in einer Android-Bibliothek zu starten

Mein Problem ist, dass ich entweder den Dienst verstecken oder den Dienst starten kann.

Um eine Klasse für App-Entwickler auszublenden habe ich nur den Weg gefunden, indem ich "public" vor class MyService extends Service {...} weglasse, so dass ich nur eine Instanz innerhalb des gleichen Pakets der Bibliothek bekomme.

Zum Starten des Dienstes von startService(new Intent(context, MyService.class)) ist es erforderlich, es in meinem Bibliotheksmanifest zu deklarieren.

Aber wenn die Serviceklasse nicht öffentlich ist die Compiler sagt

‚com.mydomain.MyService‘ ist nicht öffentlich

Irgendwelche Ideen, wie ich die verborgene Existenz des Dienstes erreichen kann?

Antwort

0

Ich möchte eine Android-Bibliothek mit einem versteckten gestarteten Dienst entwickeln, der vom App-Entwickler, der die Bibliothek verwendet, nicht gesehen werden sollte.

Wenn von „Service“ können Sie eine Unterklasse von Service bedeuten, über <service> im Manifest registriert, ist dies nicht möglich. A Service muss public sein, mit einem Nullargumentkonstruktor public. Es benötigt auch das Element <service> im Manifest. All das kann der App-Entwickler sehen, indem er Ihre Bibliothek untersucht oder die Build-Ausgabe untersucht. Dies ist wichtig, da es der App-Entwickler ist, der für die App verantwortlich ist, einschließlich alles in der App, einschließlich Ihrer Bibliothek und ihres Dienstes.