2016-04-23 12 views
0

私は大学のアンドロイド運動を試みています。私は警報の部分に固執しています。警報によって決められた時間を得ると、私は警報を送信する必要があり、通知のための別の活動を開くことができます。放送受信機を利用して活動を始めるには

クラスは既にBroadcastReceiverを拡張しているので、どうすれば別の活動を開始できますか?

私のクラスでは、このようなものです:

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

私はあなたにも、ユーザーにとこだわりのオプションを与えることをお勧めしますおそらく 'setPriority()'を使って 'Notification'を呼び出します。すべてのユーザーが、特にデバイスが使用されている場合は、目覚まし時計アプリがフォアグラウンドを引き継ぐ必要があるとは限りません。 – CommonsWare

答えて

2

あなたはContextからstartActivityを実行する必要があるので、次のことを試してください。

context.startActivity(itTreino); 
+3

アクティビティから 'startActivity()'が呼び出されていないので、 'Intent.FLAG_ACTIVITY_NEW_TASK'が' Intent'に必要であることに注意してください。 – CommonsWare

関連する問題