2011-08-24 3 views
0

Est-il possible de forcer un redémarrage de l'appareil après l'installation de mon apk?Redémarrer après l'installation

Je veux forcer cela parce que je veux m'assurer que mon service est démarré.

+4

Cela semble une mauvaise façon de gérer le problème, je suis sûr que vous pouvez vous assurer qu'un service est chargé sans avoir besoin d'un redémarrage de l'appareil – Pierre

+0

dupliquer possible avec http://stackoverflow.com/questions/2127044/how-to -start-android-service-on-installation –

+0

@Emmanuel: Je ne dirais pas un doublon, la question en est une autre, mais la bonne façon est de faire ce que l'autre question demande. –

Répondre

2

Très probablement la réponse est pas, vous n'êtes pas autorisé à faire de telles choses à partir de votre application. C'est le privilège exclusif de l'utilisateur qui détient le téléphone (et peut-être des services du système de base).

Vous pouvez toutefois vous assurer que le service est démarré lorsque l'utilisateur démarre votre activité principale, ce qui serait une chose très normale à faire juste après que l'utilisateur ait installé votre application.

Pour plus d'informations, voir la question How to start android service on installation, qui est en fait ce que vous devriez essayer de faire.

+0

ok, donc est-il peut-être capable de laisser un message après l'installation, pour montrer à l'utilisateur qu'il doit redémarrer? – user902131

+1

Pourquoi voudriez-vous que l'utilisateur redémarre le téléphone? N'essayez-vous pas simplement de vous assurer que votre service est démarré? Si c'est le cas, il suffit de laisser l'utilisateur démarrer votre application quand il en a besoin (et par conséquent votre service.) –

0

Il n'est pas possible que votre application fasse quoi que ce soit dès qu'elle est installée, avant que l'utilisateur ne la lance pour la première fois à partir de l'écran d'accueil. Il n'y a pas d'action de diffusion que vous pouvez écouter explicitement. Cependant, vous pouvez écouter quelque chose de générique qui est appelé beaucoup, comme:

  • android.intent.action.USER_PRESENT,
  • android.intent.action.SCREEN_OFF ou
  • android.intent.action.SCREEN_ON

Dans tous les cas vous ne devriez pas redémarrer le périphérique. Vos utilisateurs vous traqueront et vous tueront avec des pierres. Blague à part, Google pourrait effectivement tirer votre application du marché pour cela. Écoutez simplement l'une des actions mentionnées ci-dessus, vérifiez si l'application vient d'être installée (en utilisant une préférence booléenne unique, par exemple) et démarrez le service.

Remarque: si vous finissez par écouter l'une des actions ci-dessus, veuillez désactiver votre récepteur la première fois qu'il reçoit une intention. Vous pouvez le faire comme si (dans votre récepteur):

public class FirstTimeReceiver extends BroadcastReceiver { 

    public void onReceive (Context context, Intent intent) { 
     // start your service (which does stuff asynchronously, of course, and then: 
     final ComponentName mySelf = new ComponentName(context, FirstTimeReceiver.class); 
     context.getPackageManager().setComponentEnabledSetting(mySelf, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
    } 

} 

Cependant, vous devriez le faire que si en quelque sorte ce service est absolument essentiel pour l'utilisateur (il y a quelques scénarios appropriés pour cela), et non pour vous/votre application. Comme bjarkef mentionné, vous ne devriez le démarrer après que l'utilisateur démarre votre application à partir de l'écran d'accueil (mieux encore, demander la permission de l'utilisateur pour exécuter le service).

+0

thx 4 ur help.Je vais essayer de cette façon sans redémarrer :-) vous avez raison, c'est mieux pour l'utilisateur – user902131

+0

L'intention de diffusion TIME_TICK pourrait-elle être un bon moyen de démarrer le service dès que possible? –

+1

N'oubliez pas de désenregistrer le récepteur immédiatement après le démarrage du service sur une telle intention, afin de ne pas ralentir inutilement le téléphone des utilisateurs. –

Questions connexes