Récepteur de radiodiffusion ne fonctionne Pas Après le Redémarrage de l'Appareil Android
J'ai déjà vérifié toutes les questions connexes et n'ont pas trouvé de solution pour ce problème. C'est donc un absolument nouveau problème pour moi.
Ce Que J'Ai
J'ai une application Android qui enregistre quelques récepteurs de radiodiffusion dans son manifeste. C'est ce que mon manifeste ressemble.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.app.myapp">
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false" />
<application
android:name=".base.MyApp"
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/label_app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="label, allowBackup">
<receiver android:name=".mics.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
<receiver android:name=".PhoneCallReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<receiver
android:name=".mics.DeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
</receiver>
<receiver
android:name="com.clevertap.android.sdk.InstallReferrerBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<meta-data
android:name="com.app.myapp.utils.ImageLoaderModule"
android:value="GlideModule" />
<meta-data
android:name="com.app.myapp.utils.AudioCoverLoaderModule"
android:value="GlideModule" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
<activity
android:name=".core.activities.SplashActivity"
android:excludeFromRecents="true"
android:label="@string/label_app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity-alias
android:name=".core.activities.SplashActivity-Alias"
android:icon="@drawable/ic_launcher"
android:label="@string/label_app_name"
android:noHistory="true"
android:targetActivity="com.app.myapp.core.activities.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY" />
</intent-filter>
</activity-alias>
<activity
android:name=".core.flow.authFlow.activities.AuthFlowActivity"
android:excludeFromRecents="true"
android:label="@string/label_app_name"
android:screenOrientation="portrait" />
<service android:name=".features.fileCloudSync.KillNotificationService" />
</application>
</manifest>
Il y a 10-15 aussi d'autres activités, mais ont été supprimées pour des raisons de simplicité. Et c'est la base de démarrage du récepteur de la classe. Je commence un service à partir de là.
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
AlertUtils.showToast(context, "BOOT COMPLETED", Toast.LENGTH_LONG);
}
}
}
et le téléphone récepteur d'appel de classe ressemble à quelque chose comme ceci (il a été simplifiée (ainsi),
public class PhoneCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
AlertUtils.showToast(context, "PHONE CALL RECEIVED", Toast.LENGTH_LONG);
//Simplified for brevity
}
}
}
Le Problème
Tous ces récepteurs fonctionnent bien quand j'ai installer l'application et commencer une fois. Mais après je redémarre mon appareil ces récepteurs ne fonctionnent pas du tout. Ni le BootCompleteReceiver
ni la PhoneCallReceiver
obtient leur onReceive()
méthode appelée.
Mon hypothèse était que ces récepteurs seraient obtenir l'enregistrement automatiquement après le redémarrage, mais il ne fonctionne tout simplement pas. J'ai besoin de la BootCompleteReceiver
de travail afin que je puisse démarrer un service important dans mon application.
Mes Observations
J'ai testé ce fond. Après le redémarrage de l'appareil, les récepteurs fonctionnent très bien dans mon Nexus 5X (Nougat), Nexus 6P (Nougat), YU Yuphoria (Lollipop) mais pas dans mon OnePlus 3 (Nougat) et Mi 4i (Lollipop).
Comment le même code fonctionne parfaitement sur un grand nombre d'appareils et de ne pas fonctionner du tout sur les autres appareils? Je n'ai rien changé du tout.
Ce que je fais mal ici? Mon application est fortement dépendante de ces émissions et commence des services sur la base de ces. Toute aide sera très appréciée.
EDIT 1
De mieux comprendre le problème, je viens de créer un très petit projet de test avec juste une seule activité, et de l'exacte même BootCompleteReceiver
et PhoneCallReceiver
.
Mais bizarrement, ce projet fonctionne parfaitement sur mon OnePlus 3 où mon application réelle de récepteurs ne fonctionnent pas après un redémarrage. J'ai d'abord été en supposant que le problème vient de l'OS ou de l'appareil en quelque sorte, mais il ne l'est pas.
Alors, où est le problème? Est-il dans mon appli (mais il fonctionne parfaitement sur d'autres appareils) ou dans l'OS et de l'appareil (le petit projet de test fonctionne très bien sur le même OS et même appareil)?
Il est vraiment déroutant pour moi. J'aurais besoin d'une aide d'un expert sur ce sujet.
EDIT 2
J'ai essayé la suggestion donnée par @shadygoneinsane. Voici mes observations.
1) j'ai essayé d'envoyer le BOOT_COMPLETED diffusion via ADB.
./adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -p com.app.myapp
Et j'ai eu cette trace de la pile,
Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED pkg=com.app.myapp }
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=25378, uid=2000
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3696)
at com.android.commands.am.Am.sendBroadcast(Am.java:778)
at com.android.commands.am.Am.onRun(Am.java:404)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.am.Am.main(Am.java:121)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:276)
Peut-être parce que mon appareil n'est pas enracinée. Je n'arrive pas à envoyer cette diffusion, en quelque sorte.
2) j'ai essayé avec le PROCESS_OUTGOING_CALLS diffusion après que.
./adb shell am broadcast -a android.intent.action.PROCESS_OUTGOING_CALLS -p com.app.myapp
Je l'ai obtenu,
Broadcasting: Intent { act=android.intent.action.PROCESS_OUTGOING_CALLS pkg=com.app.myapp }
Broadcast completed: result=0
Il semble que l'émission a été un succès, mais je ne vois pas de pain grillé ou de n'importe quel journal. J'ai ensuite ouvert mon dialer pour composer un numéro et je peux alors voir le pain et le journal.
Il semble donc que l'envoi de la diffusion par la BAD n'a pas fonctionné, mais ouvrir le composeur et composer un numéro à fait.
MODIFIER 3
Que par la suggestion de @ChaitanyaAtkuri, j'ai aussi essayé d'ajouter la priorité à l'intention des filtres mais cela ne fonctionne pas ainsi.
J'ai utilisé des domaines prioritaires comme la 500, 999 et même la plus grande valeur entière, mais rien ne fonctionne. Ce problème se produit également dans certains de mes amis apps. Ils travaillent dans les appareils et ne fonctionne pas dans d'autres.
EDITION 4
J'ai enfin trouvé la cause racine du problème qui se passe dans mon OnePlus 3. Mon OnePlus 3 a récemment été mis à jour afin de Nougat et ils ont introduit une fonctionnalité similaire à Mi dispositifs qui empêchent certaines applications d'auto-démarrage après le redémarrage.
Lors de la désactivation de cette fonction de mes applications ont commencé à recevoir les émissions après le redémarrage parfaitement. Mais ce n'est toujours pas expliquer deux choses.
1) Mon petit projet de test est dans la liste blanche automatiquement dans la liste de Lancer des applications et c'est pourquoi il fonctionne comme prévu. Mais comment est-ce possible? Pourquoi le système d'exploitation considère cette petite application digne d'être auto-commencer?
2) Il y a certaines applications, comme LockDown Pro, 500 Firepaper qui est sur la liste noire dans le AutoLaunch écran des applications, mais encore, il reçoit les émissions après le redémarrage de mon OnePlus 3 et Mi 4i. Comment est-ce possible maintenant? Est-il possible en quelque sorte de programmation pour permettre à mon application pour le lancement automatique de ces appareils (OnePlus et Mi)?
MODIFIER 5
J'ai essayé la solution proposée par @Rahul Chowdhury et il semble vraiment très bien fonctionner. Après l'ajout de l'accessibilité des services, le problème est ré-résolu.
Mais si l'utilisateur annule l'accessibilité de l'autorisation après l'octroi de il alors est-il un moyen pour moi de programmation pour vérifier si l'accessibilité de l'autorisation est disponible sur mon application?
- Essayez d'ajouter à la déclaration Manifeste:
android:enabled="true"
etandroid:exported="true"
. Également dans le coffre classe de récepteur, retirez leintent.getAction
conditionnel car il n'y a pas de raison de le vérifier, car la seule fois que la diffusion se fera virer est au démarrage. - J'ai juste essayé de vos suggestions, et le résultat est toujours le même. En fait, ceux-ci peuvent être considérées comme des pratiques exemplaires et ne change pas la mise en œuvre d'une quelconque façon.
- Un chemin différent. Peut-être qu'il a fait un travail et vous ne voyez pas le pain grillé. Peut-être qu'il a échoué et que vous n'avez pas la voir échouer. Modifier le code pour enregistrer quelque chose que vous pouvez détecter plus tard. Rappelez-vous récepteurs de radiodiffusion finir dans les 10 secondes ou de l'application échoue.
- Je n'ai pas testé une fois et d'avoir posé cette question ici. Après plusieurs tests, je peux confirmer que ces récepteurs ne fonctionnent pas après un redémarrage dans certains des dispositifs mentionnés ci-dessus. Et comme vous l'avez mentionné, comment puis-je détecter si elle a échoué?
- Avez-vous traversé cette réponse
- Oui, j'ai déjà passé par cette réponse, mais elle n'est pas applicable ici. L'utilisateur évidemment ouvre l'application une fois et puis redémarrage de l'appareil, mais les récepteurs de radiodiffusion ne pas le feu ici. Peut-être que l'application se déplace à l'état d'arrêt en quelque sorte, mais ce n'est pas arrivé pour le petit projet de test que j'avais créé.
- Avez-vous essayer de tester avec des commandes shell à envoyer des Émissions pour le Boot Terminé manuellement à l'aide de la BAD Essayez de l'utiliser pour tester si votre application reçoit une émission de radiodiffusion ou pas! " adb shell de radiodiffusion am -un android.l'intention.d'action.BOOT_COMPLETED -p com.mypackage."nom de l'
- J'ai essayé ta suggestion et posté à l'observation formulée dans la question elle-même. Veuillez vérifier les et laissez-moi savoir ce qui devrait être ma prochaine étape.
- Êtes-vous simplement en s'appuyant sur du pain grillé ou des journaux pour vérifier si l'émission a été reçu ?
- Laissez-nous continuer cette discussion dans le chat.
- est-ce que votre application de test ont tout service dans tout ça? Juste pour comprendre si un plus de listes blanches d'application sans services.
- Pas de l'application de test n'ont pas de service. Mais même si j'en ajouter un, mais encore il est dans la liste blanche.
- Veuillez vous référer à la dernière partie de ma mise à jour de réponse pour savoir si l'accessibilité du service est activé pour votre application ou pas
- N'avez-vous pas d'avis que cette question est devenue complètement hors de contrôle? D'abord c'était une question à propos de la cause de l'échec d'une autostart; puis il s'est transformé en une question à propos de comment la ROM personnalisée sur certains appareils à choisir les applications à la liste blanche; et enfin, la question était de savoir comment traiter l'autorisation de la disponibilité, de la révocation. Il devrait être divisé en 3 questions au moins (pour ne pas mentionner que certaines de ces questions pourrait être considéré comme hors-sujet / trop large). Je ne peux même pas dire lequel de ces questions, la accepté de répondre à des adresses...
- La accepté de répondre à des adresses fait le problème que j'ai été confronté et il est résolu. Merci.
- veuillez vérifier ma réponse stackoverflow.com/a/42976901/909317
- Eu le même problème. Comme mentionné, Démarrage récepteur n'ai pas touché un plus (3T) et MI appareils. Vraiment étrange était sur certains de la Cop, j'ai créé tout en essayant de cela, démarrez le récepteur a été frapper!! Mon observation est la suivante: Sur un plus 3T (et peut-être d'autres versions), si vous avez le mot "test" dans la structure du package, de démarrage du récepteur est touché. Autre chose, elle ne le fera pas!! (sons vraiment fou) Sur MI appareils, pas de "test" va aider. La même chose s'applique pour GcmNetworkManager & FirebaseJobDispatcher. Enfin, la solution retenue a sauvé moi aussi! Certains de ces éléments font que vous vous sentez de commutation de développement iOS 🙂
- Ayant le même problème sur mon OnePlus 5.Mon petit PoC application (appelé testinator, contient un service) reçoit le BOOT_COMPLETED comme prévu, mais mon application ne fonctionne pas. Après l'arrêt d'optimisation de la batterie, à la fois les applications reçoivent le BOOT_COMPLETED intention comme prévu. Toujours à la recherche d'une meilleure solution, car je tiens à garder optimisation de la batterie sur.
- L'enfer d'une enquête +1
Vous devez vous connecter pour publier un commentaire.
Voici un modèle testé et solution de travail à la fois sur les appareils que vous avez mentionné, OnePlus et Mi.
Comme vous l'avez dit le démarrage automatique de prévention de la fonctionnalité sur OnePlus et Mi dispositifs empêcher les applications de démarrage de leurs services automatiquement au démarrage du système complet afin d'améliorer l'ensemble du dispositif d'amorçage de la vitesse et les performances de la batterie. Cependant, il existe une solution de contournement pour obtenir votre application de fonctionner même lorsque cette fonction est activée.
J'ai remarqué que si vous avez un
AccessibilityService
dans votre application et il est activé par l'utilisateur, puis votre application passe le filtre que ces fabricants s'appliquent et que l'application reçoit de démarrage complet de l'événement et de tout autreBroadcastReceiver
fonctionne comme prévu.L'explication possible de cette astuce peut être que depuis
AccessibilityService
est un système de niveau de service, de sorte que par l'enregistrement de votre propre service vous sont passer le certains filtre appliqué par ces fabricants et dès que votre personnaliséAccessibilityService
est déclenchée par le système d'exploitation, votre application devient active dans la réception de l'admissiblesBroadcastReceiver
que vous aviez enregistré.Ainsi, voici comment le faire,
Commencer par l'ajout de la permission de votre
AndroidManifest.xml
,Cela vous permettra d'enregistrer votre application
AccessibilityService
avec le système.Maintenant, ajoutez un équipement de base pour votre
AccessibilityService
par la création d'un fichier par exemplemy_accessibility_service.xml
à l'intérieur de XML sous-dossier de votre dossier res dans votre projet.Il n'y a qu'un pas de plus à faire, définir votre personnalisé
AccessibilityService
dans votre projet,Remarque, puisque tu n'as pas besoin de l'
AccessibilityService
pour n'importe quel but, plutôt que cette solution de contournement, vous pouvez laisser les méthodes de remplacement vide.Enfin, il suffit de déclarer votre
AccessibilityService
dans votreAndroidManifest.xml
,C'est tout. Maintenant, au sein de votre application, il suffit de demander à vos utilisateurs de tourner sur l'accessibilité des services pour votre application dans les paramètres et de les laisser sur et le tour est joué! Votre application fonctionne très bien sur tous les appareils, même lorsque le système d'exploitation met un filtre sur les applications de démarrage automatique au démarrage.
EDIT 1
Voici comment vous pouvez vérifier si l'accessibilité est activé ou pas pour votre application,
Espère que cette aide.
BOOT_COMPLETE
. Beaucoup d'applications fondamentales et, plus important encore, réel des services d'accessibilité pour les personnes déficientes peut être affecté, si tout le monde commence à (sig)utilisation pratique.isAccessibilitySettingsOn
vous avez une condition ifif (accessibilityEnabled == ACCESSIBILITY_ENABLED)
oùaccessibilityEnabled
est unint
toutACCESSIBILITY_ENABLED
est une chaîne avec la valeuraccessibility_enabled
. Comment est-ce la solution?android.permission.BIND_ACCESSIBILITY_SERVICE
devrait seulement être utilisé pour aider les personnes handicapées d'utiliser les appareils Android et les applications. Les applications qui ne répondent pas à cette exigence dans un délai de 30 jours peut être retiré à partir de Google Play.Salut, je suis en retard à la fête, mais j'ai été la suite de cette question depuis le début. Je sais que
One-plus
et certains autres constructeurs de maintenir une liste des applications qui peuvent recevoir BOOT_COMPLETED de diffusion. Si votre application n'est pas en liste blanche alors votre application ne sera pas lancé au démarrage. Maintenant, j'ai une solution qui est très efficace en termes de mémoire et des ressources et de la garantie de démarrer votre tâche ou un service après redémarrage ou d'une dur de démarrage n'a pas besoin deAccessibilityService
comme proposé dans ce réponse. Ici ça va..<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
autorisation de votre
manifest
fichier.2.Si vous n'avez pas de dépendance sur
com.google.android.gms:play-services-gcm
, ajoutez les lignes suivantes à votre construction.gradle est la section des dépendances:Sinon, ajouter le texte suivant:
C'est un bibliothèque de
firebase
équipe qui dépendgoogle-play-service
bibliothèque pour programmer vos travaux et de mon point de vuegoogle-play-service
a la permission de se lancer au démarrage de sorte qu'au lieu de système degoogle-play-service
permettra de exécuter votre travail dès que l'appareil a redémarré.Maintenant cette étape est facile, il suffit de définir une JobService classe
}
Ajouter votre Service de l'Emploi dans le fichier manifest.
Calendrier de ce travail n'importe où vous voulez pour l'e.g lorsque votre application de démarrage.
6.Ça y est!! Vous pouvez maintenant exécuter votre tâche ou d'un service sur le périphérique de démarrage, peu importe où vous êtes dans la liste blanche ou pas.
Il y a un point à noter que Google Play Service doit être installé sur l'appareil, sinon ça ne fonctionne pas.
.setLifetime(Lifetime.FOREVER)
dans votre Travail?adb shell dumpsys activity service GcmService
après le redémarrage et vérifier si votre service est là.setTrigger(Trigger.executionWindow(0, 60))
qui est en boucle toutes les 1 minutes...setRecurring
est vrai. etLifetime.FOREVER
font fonctionner après le redémarrage également. Peut-être il ya certains appareils qui ont des problème après le redémarrage, mais pour moi, ça fonctionne sur les appareils qui op dit.@Aritra, Essayez cette
Supprimer quickboot (démarrage rapide) filtre d'intention et d'essayer de l'exécuter, conformément à la documentation que nous avons seulement tenu BootCompleted à acheive il. Peut-être que c'est l'interruption de ce.
Également un point important à Noter :
Ne pas se fier entièrement ou test sur Mi appareils, car ils ont leur propre OS qui arrête les fonctionnalités de base d'Android, comme ils l'ont arrêter les notifications Push, les services et les services d'arrière-plan, juste pour optimiser l'utilisation de la batterie. Pour tester cette Mi dispositif, la marque de votre application comme "AutoStart" dans la Sécurité de l'application et puis essayer.
La façon
IntentFilter
s de travail est que chaque<intent-filter></intent-filter>
contient une façon de tirer le volet. Si vous avez plusieurs façons de le tirer jusqu' (comme les deux actions que vous souhaitez écouter dans unBroadcastReceiver
), vous aurez besoin d'un indépendant<intent-filter></intent-filter>
définition pour chacun d'eux.Par conséquent, vous pouvez essayer de changer:
à:
Lire la suite ici: Les intentions et des Filtres d'Intention | Développeurs Android
MODIFIER
Si cela ne fonctionne toujours pas, vous pouvez essayer de vérifier si votre manifeste de déclaration est effectuée correctement. Essayez d'exécuter la commande suivante dans votre terminal, en gardant le test de l'appareil connecté à l'ordinateur:
Si cela ne fonctionne pas, vous devriez revérifier le relatif ensemble de la déclaration du récepteur dans votre fichier manifest.
EDIT 2
Il peut sembler bizarre, mais essayez de suivre ces étapes:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.app.myapp/.mics.BootReceiver
?J'ai été aux prises avec ce problème depuis presque un an. Dans toutes mes applications, je fais preuve d'une avis des utilisateurs de désactiver l'optimisation de la batterie pour mon application.
Après beaucoup de tests sur l'Un des Plus périphériques, je suis en mesure de recevoir de démarrage terminé de diffusion lors de l'optimisation de la batterie est désactivée pour mon application. À mon avis, il est beaucoup mieux que l'accessibilité des services évoqués ci-dessus.
La façon la plus simple de demander à l'utilisateur de désactiver l'optimisation de la batterie de votre application est de montrer une sorte d'avis, et ouvrez le couvercle de l'optimisation de la page lorsque l'utilisateur clique sur elle. Vous pouvez utiliser le code ci-dessous pour le faire.
Et vous pouvez également masquer l'avis ci-dessous si la fonction renvoie true.
La façon de démarrer le service sur le périphérique de démarrage(autorun app, etc.)
Pour la première: depuis la version Android 3.1+ vous ne recevez pas BOOT_COMPLETE si l'utilisateur n'a jamais commencé votre application au moins une fois d'utilisateur ou de "force " fermé" de l'application.
Cela a été fait pour empêcher les logiciels malveillants automatiquement du service de registre. Ce trou de sécurité a été fermée dans les plus récentes versions d'Android.
Solution:
Créer app avec l'activité. Lorsque l'utilisateur de l'exécuter une fois l'application peut recevoir BOOT_COMPLETE message de diffusion.
Pour la deuxième: BOOT_COMPLETE est envoyé avant le stockage externe est monté. Si l'application est installée pour de stockage externe, il ne recevra pas BOOT_COMPLETE message de diffusion.
Dans ce cas, il y a deux solution:
Si votre application est déjà installée dans la mémoire de stockage interne puis le code ci-dessous peut vous aider à comprendre comment démarrer le service sur le périphérique de démarrage.
Dans Manifest.xml
Autorisation:
Enregistrer votre BOOT_COMPLETED récepteur:
Inscrire votre service:
Récepteur OnBoot.java:
Pour HTC vous avez peut être besoin également d'ajouter dans le Manifeste de ce code si l'appareil ne se prennent pas RECEIVE_BOOT_COMPLETED:
Récepteur maintenant ressembler à ceci:
Comment tester BOOT_COMPLETED sans redémarrer émulateur ou un périphérique réel?
Il est facile. Essayez ceci:
Comment faire pour obtenir l'id de l'appareil? Obtenir la liste des appareils connectés avec id:
de la bad dans ADT, par défaut, vous pouvez le trouver dans:
Profitez-en! )