2016-04-23 11 views
0

Ich versuche, eine Android-Übung von meinem College zu machen, und ich bin auf dem Alarm Teil fest. Wenn Sie die durch den Alarm festgelegte Zeit erhalten, muss ich eine Warnung senden und eine andere Aktivität für die Benachrichtigung öffnen.So starten Sie eine Aktivität über einen Broadcast-Empfänger

Aber wie die Klasse den BroadcastReceiver bereits erweitert, wie kann ich eine andere Aktivität starten?

Meine Klasse ist wie folgt aus:

public class ReceiverAlarme extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    //inicia a Activity do Treino 
    Intent itTreino = new Intent(this, telaTreino.class); 

    //Does not work 
    //startActivity(itTreino); 

    //tentei fazer uma notificação que abrisse o programa, mas não rolou 
    Notification.Builder notificacao = new Notification.Builder(this); 
    notificacao.setDefaults(Notification.DEFAULT_ALL) 
      .setSmallIcon(android.R.drawable.ic_dialog_email) 
      .setContentTitle("Agendamento do teste") 
      .setContentText("Você tem um teste agendado!") 
     .setContentIntent(PendingIntent.getActivities(getApplicationContext(), 1, itTreino, PendingIntent.FLAG_CANCEL_CURRENT)); 

    NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    nm.notify(1, notificacao.build()); 
} 
} 
+0

Ich würde empfehlen, dass Sie auch dem Benutzer die Möglichkeit geben, mit dem Aufkleben die 'Notification', vielleicht mit' setPriority() '. Nicht alle Benutzer möchten unbedingt, dass ihre Wecker-App den Vordergrund übernimmt, insbesondere wenn das Gerät verwendet wird. – CommonsWare

Antwort

2

Sie müssen Folgendes ausführen startActivity von einem Context so versuchen:

context.startActivity(itTreino); 
+3

Beachten Sie, dass dies 'Intent.FLAG_ACTIVITY_NEW_TASK' für 'Intent' erfordert, da 'startActivity()' nicht von einer Aktivität aufgerufen wird. – CommonsWare

Verwandte Themen