D'après tout ce que j'ai vu sur Stack Exchange et ailleurs, j'ai tout configuré correctement pour démarrer un IntentService au démarrage du système d'exploitation Android. Malheureusement, il ne démarre pas au démarrage et je n'obtiens aucune erreur. Peut-être que les experts peuvent vous 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 le démarrage:
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);
}
}
MISE À JOUR : 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");
le gestionnaire onReceive de StartupIntentReceiver, et rien n'est jamais enregistré. Il ne parvient même pas au BroadcastReceiver.
Je pense que je déploie l'APK et que je teste correctement, j'exécute simplement Debug dans Eclipse et la console dit qu'elle l'installe avec succès sur ma tablette Xoom à \ BatteryLogger \ bin \ BatteryLogger.apk. Ensuite, pour tester, je redémarre la tablette, puis regarde les journaux dans DDMS et 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 je manque quelque chose? Encore une fois, toute aide est très appréciée.
Log.v("BatteryLogger", "Got to onReceive, about to start service");
au gestionnaire onReceive, et il n'apparaît jamais dans les journaux. Donc l'auditeur échoue (?)Réponses:
Eh bien, voici un exemple complet d'application AutoStart
Fichier AndroidManifest
autostart.java
service.java
hello.java - Cela apparaîtra chaque fois que vous démarrez l'appareil après avoir exécuté une fois l'application.
la source
Votre service est peut-être arrêté avant la fin en raison de la mise en veille de l'appareil après le démarrage. Vous devez d'abord obtenir un verrou de réveil. Heureusement, la bibliothèque de support nous donne une classe pour faire ceci:
puis, dans votre service, assurez-vous de libérer le verrou de réveil:
N'oubliez pas d'ajouter l'autorisation WAKE_LOCK:
la source
La suite devrait fonctionner. J'ai vérifié. Peut-être que votre problème est ailleurs.
la source
Log()
déclarations ne soit là et que le périphérique émulateur n'indique pas que mon service s'exécute dans les paramètres du système d'exploitation. Voici l'erreur dans DDMS:System.err - at com.phx.batterylogger$1.onReceive(BatteryLogger.java:43)
cela signifie-t-il que le problème est sur la ligne 43 de mon service BatteryLogger?J'ai trouvé un moyen de faire fonctionner correctement votre application lorsque l'appareil redémarre, veuillez suivre les étapes ci-dessous pour réussir.
Fichier AndroidManifest
UIBootReceiver
Cela demande la permission de ne pas avoir besoin de gérer l'économie de batterie pour cette application afin que vous puissiez exécuter en arrière-plan de manière stable.
Déclarez ce code dans onCreate () de la classe MainActivity:
la source
Cela ressemble beaucoup au mien mais j'utilise le nom complet du package pour le récepteur:
J'ai:
la source
J'ai eu du succès sans le package complet, savez-vous où la chaîne d'appels est interrompue? Si vous déboguez avec
Log()
's, à quel moment cela ne fonctionne-t-il plus?Je pense que cela peut être dans votre IntentService, tout semble bien.
la source
Log.v("BatteryLogger", "Got to onReceive, about to start service");
au gestionnaire onReceive, et il n'apparaît jamais dans les journaux. Donc l'auditeur échoue (?)Juste pour faciliter la recherche, comme mentionné dans les commentaires,
cela n'est pas possible depuis 3.1https://stackoverflow.com/a/19856367/6505257la source