131 votes

Android - Démarrer le service au démarrage

D'après tout ce que j'ai vu sur Stack Exchange et ailleurs, j'ai tout configuré correctement pour lancer un IntentService au démarrage d'Android OS. Malheureusement, il ne démarre pas au démarrage, et je ne reçois aucune erreur. Peut-être les experts peuvent-ils m'aider...

Manifeste :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.phx.batterylogger"
  android:versionCode="1"
  android:versionName="1.0"
  android:installLocation="internalOnly">

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:name=".BatteryLogger"/>
    <receiver android:name=".StartupIntentReceiver">  
        <intent-filter>  
            <action android:name="android.intent.action.BOOT_COMPLETED" />  
        </intent-filter>  
    </receiver>
</application>

</manifest>

BroadcastReceiver pour Startup :

package com.phx.batterylogger;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class StartupIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent serviceIntent = new Intent(context, BatteryLogger.class);
        context.startService(serviceIntent);
    }
}

UPDATE : J'ai essayé à peu près toutes les suggestions ci-dessous, et j'ai ajouté une journalisation telle que . Log.v("BatteryLogger", "Got to onReceive, about to start service"); au gestionnaire onReceive du StartupIntentReceiver, et rien n'est jamais enregistré. Donc ça n'arrive même pas jusqu'au BroadcastReceiver.

Je pense que je déploie l'APK et le teste correctement, je viens de lancer Debug dans Eclipse et la console indique qu'il l'installe avec succès sur ma tablette Xoom à l'adresse suivante \BatteryLogger\bin\BatteryLogger.apk. Ensuite, pour tester, je redémarre la tablette, puis je regarde les journaux dans DDMS et je vérifie les services en cours d'exécution dans les paramètres du système d'exploitation. Est-ce que tout cela semble correct ou est-ce que quelque chose m'échappe ? Encore une fois, toute aide est la bienvenue.

1 votes

Quel problème vous avez, vous n'avez pas d'interface utilisateur ?

1 votes

Le service ne démarre jamais, c'est ça le problème.

0 votes

Comment avez-vous su que votre service ne démarrait pas, avez-vous imprimé les journaux ou autre chose de ce genre ?

1voto

Phix Points 2068

J'ai eu du succès sans le paquet complet, savez-vous où la chaîne d'appel est interrompue ? Si vous déboguez avec Log() À partir de quel moment cela ne fonctionne-t-il plus ?

Je pense que c'est peut-être dans votre IntentService, tout semble correct.

0 votes

J'ai ajouté Log.v("BatteryLogger", "Got to onReceive, about to start service"); au gestionnaire onReceive, et ça n'apparaît jamais dans les journaux. Donc l'écouteur échoue ( ?)

0 votes

Qu'est-ce qui fait que le récepteur de diffusion démarre lorsque le téléphone est lancé ? Merci !

0 votes

Garçon. Je n'ai pas touché à Android depuis quelques années. Désolé @Ruchir

0voto

MrKew Points 31

Juste pour faciliter la recherche, comme mentionné dans les commentaires, ce n'est pas possible depuis 3.1 https://stackoverflow.com/a/19856367/6505257

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X