2013-03-08 16 views
6

Prima di iniziare, questo è pensato per il nostro dispositivo basato su Android e non per un telefono né per la distribuzione altrove.Avvio di un servizio init.rc Android da un'attività

Abbiamo un servizio in init.rc che è un server di database postgresql. Questo si avvia all'avvio e viene sempre eseguito in background per il sistema. C'è la possibilità che potrebbe chiudere comunque e vorremmo avere un modo per fermarsi e avviare questo servizio dal lato Android del sistema.

C'è un modo per inviare un comando di avvio di init da un'attività Android? Da una shell di root, questo sarebbe l'equivalente dell'esecuzione di "start servicename" e "stop servicename".

risposta

11

per avviare un servizio che viene dichiarata nel file init.rc, penso che è necessario modificare la proprietà di sistema "ctl.start" con i seguenti comandi:

Nel file C:

property_set("ctl.start", "<service_name>"); 

in java:

SystemProperties.set("ctl.start", "<service_name>"); 

Ciò implica che la vostra attività ha le autorizzazioni di sistema (nel manifesto):

android:sharedUserId="android.uid.system" 

ed è firmato dal tasto di sistema (o piattaforma mettere in Android.mk)

Come si può intuire, per fermare l'uso di servizio seguenti comandi:

property_set("ctl.stop", "<service_name>"); 

o

SystemProperties.set("ctl.stop", "<service_name>"); 
+0

Mi spiace di non averlo notato fino ad ora. Con "metti la piattaforma in Android.mk" è qualcosa che è solo per le app C in esecuzione su Android? E per la chiave di sistema, vuol dire che devi costruire l'APK separatamente per ogni sistema che dovresti distribuire? – ekthomson

+1

Sto supponendo con la chiave di sistema, ciò significa che avremmo bisogno di costruire effettivamente l'intero sistema Android per l'hardware se volessimo utilizzare questo metodo per avviare il nostro servizio. Penso che in questo momento ciò renderebbe per lo più inutile per i nostri bisogni, perché non abbiamo abbastanza driver per l'hardware da costruirci da soli e ci affidiamo al produttore del SoM per costruirlo. Grazie per la risposta comunque. Controllerò con il produttore del SoM e vedere se possono darci un albero di compilazione più completo con i driver inclusi. – ekthomson

Problemi correlati