7
votes

BroadCastreceiver ne fonctionne pas lorsque l'application ne fonctionne pas

Dans mon fichier manifeste, j'ai déclaré le destinataire. (comme suit) xxx

Cependant, une fois que j'ai fermé ma demande, je ne suis pas en mesure d'obtenir les alarmes et les notifications. Apparemment, un appel au Onreceive dans mon récepteur de diffusion n'est jamais effectué. xxx

à l'intérieur de la mainagivité, mon alarme La classe Manager est comme suit. xxx

et mon manifeste comme c'est suit: xxx

Que dois-je faire dans l'ordre Pour recevoir les notifications / alarmes même si j'ai fermé mon application. Service de fond?


6 Réponses :


0
votes

Vous devez ajouter un filtre à l'intention dans Manifeste, comme xxx


1 commentaires

Est-ce la même chose pour la rétention d'alarme? parce que ce que vous avez donné est pour SMS



0
votes

Comme Gong Cong, vous devez déclarer quels événements que votre récepteur devrait écouter.

Par exemple: xxx

et ensuite lorsque vous avez défini votre alarme, utilisez un Intention de votre action: xxx


6 commentaires

Je l'ai fait. Cependant, une fois que je désactive mon activité, l'alarme ne s'éteint pas. Avec l'application exécutant le code ci-dessus (même après mes modifications) fonctionne. Mais le moment où je supprimai l'application (du gestionnaire de tâches), il ne fonctionne pas.


Pouvez-vous poster une partie de votre code? Comment définissez votre alarme? Utilisez-vous l'alarmmanager.rtc_wakeup drapeau?


Oui, je le fais, cependant, je ne peux pas mettre un supplément avec l'intention de ne pas appeler une activité avec l'intention plutôt que le récepteur de diffusion dans le manifeste no?


C'est étrange, votre code semble propre ... Voici un exemple complet pour ce dont vous avez besoin, essayez le code de votre projet wptrafficanalyzer.in/blog/...


J'ai lu quelque part après 3.1 si vous forcez à fermer votre candidature, le récepteur de diffusion ne fonctionnera pas.


MMMH, essayez d'ajouter ce drapeau dans votre intention: développeur.android.com / Référence / Android / Contenu / ...



0
votes

Votre code fonctionne bien!

Tout ce que vous avez à faire est de changer cette ligne: p> xxx pré>

avec cette ligne: p>

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
SystemClock.elapsedRealtime() + 5000, pendingIntent);


0 commentaires

-1
votes

1.Declare le récepteur dans le fichier manifeste: xxx pré>

N'oubliez toujours que l'ensemble du système Android est sensible à la casse. Vérifiez donc votre orthographe est correcte dans l'androidmainfest.xml. P>

2.Si vous créez un PLINGINTENT code> pour votre récepteur, veuillez ajouter un DemandeCode code> - Même c'est un nombre aléatoire! Sans votre Onreceive Code> Code Ne jamais appeler! P>

La fonction qui démarre AlarmManager code> doit ressembler ci-dessous: p>

package your.package.name;

public class TestAlarmReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent arg1) {
     // your code here!
   }
}


0 commentaires

0
votes

Dans ma compréhension, dans certains cas, en fonction du mode de mise en œuvre, le système d'exploitation a autorité à ajuster l'heure de l'alarme. Tellement essayer d'utiliser alarmmanager.set (...), alarmmanager.setexact (...) etc. en conséquence. Dans certains cas, en fonction du fabricant (OS personnalisé Android), il est possible que le système d'exploitation bloque l'alarme incendie.


0 commentaires

0
votes

Ajout Android: Exporté = "true" pour le récepteur dans le fichier manifeste m'a aidé à recevoir des alarmes (et donc, réveille l'application) même lorsque l'application a été arrêtée (intentionnellement par moi, supprimer l'application. de la liste des tâches).


0 commentaires