2016-06-07 1 views
0

j'ai un public class AlarmReceiver extends BroadcastReceiver et une activité avec la partie suivante dans son onCreateBroadcastReceiver ne déclenche pas

Intent intent = new Intent(this, AlarmReceiver.class); 
    pintent = PendingIntent.getBroadcast(this, 0, intent, 0); 
    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     alarm.setExact(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis() + 5000, pintent); 
    } else { 
     alarm.set(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis()+5000, pintent); 
    } 

Ainsi, la méthode onReceive de mes AlarmReceiver devrait être appelé après 5 secondes ce code est exécuté, devrait-il pas ? Mais ce n'est pas le cas, j'ai attendu quelques minutes mais rien ne se passe. Et oui, j'ai ajouté <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> à mon manifeste. (Mon téléphone exécute setExact)

+0

Avez-vous le récepteur figurant dans le manifeste? De plus, vous n'avez pas besoin de l'autorisation 'SET_ALARM' pour cela. –

+0

ah bien sûr ... oublié cela. Dommage que cela ne donne pas une erreur comme quand j'essaye de démarrer une activité qui n'est pas listée là. Pourquoi n'ai-je pas besoin de la permission? À quoi sert-il alors? – Ginso

+0

L'autorisation 'SET_ALARM' est nécessaire pour utiliser un' Intent' pour définir une alarme avec une application de réveil. Jetez un oeil [ici] (https://developer.android.com/reference/android/provider/AlarmClock.html). –

Répondre

0

La façon la plus simple de vous assurer que vous avez correctement créé un broadcastreceiver est de l'ajouter via le menu contextuel. De cette manière, le récepteur sera également ajouté au manifeste en conséquence.

Adding a new broadcastreceiver Adding a new broadcastreceiver#2