1

通知を作成するためのクラスがあります。クラスは次のようになります。

public class TimeAlarm extends BroadcastReceiver {

     NotificationManager nm;

     @Override
     public void onReceive(Context context, Intent intent) {
      nm = (NotificationManager) context
        .getSystemService(Context.NOTIFICATION_SERVICE);
      CharSequence from = "Scheduled Training";
      CharSequence message = "Please attend the scheduled training";
      //Intent notifyIntent = new Intent();



      PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);

      Notification notif = new Notification(R.drawable.ic_launcher,
        "NeuroQ Scheduled Training", System.currentTimeMillis());
      notif.setLatestEventInfo(context, from, message, contentIntent);
      nm.notify(1, notif);


     }
    }

QuizScreenというアクティビティがあります。これは、通知がクリックされたときに開く必要があります。私は使用してみました:

Intent quiz_intent = new Intent(TimeAlarm.this, QuizScreen.class);
                        TimeAlarm.this.startActivity(quiz_intent);

しかし、私はこのエラーが発生しています:

The constructor Intent(TimeAlarm, Class<QuizScreen>) is undefined

どこが間違っていますか?この問題を解決するにはどうすればよいですか?

4

4 に答える 4

3

Intent quiz_intent = new Intent(context, QuizScreen.class);の代わりに使用しますIntent quiz_intent = new Intent(TimeAlarm.this, QuizScreen.class);。たとえば、

public class MyBroadcastReceiver extends BroadcastReceiver {
  private NotificationManager mNotificationManager;
  private int SIMPLE_NOTFICATION_ID;

  @Override
  public void onReceive(Context context, Intent intent) {
    mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notifyDetails = new Notification(R.drawable.android,"Time Reset!",System.currentTimeMillis());
    PendingIntent myIntent = PendingIntent.getActivity(context, 0, new Intent(context, Second.class), 0);
    notifyDetails.setLatestEventInfo(context, "Time changed", "Click on me to view my second activity", myIntent);
    notifyDetails.flags |= Notification.FLAG_AUTO_CANCEL;

    mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
  }
}
于 2013-01-18T20:16:54.327 に答える
1

放送受信機はコンテキストとしてカウントされませんか?代わりに、onReceive(Context context、Intent intent)のコンテキストパラメーターを使用してください

于 2013-01-18T19:27:38.693 に答える
1

アクティビティを開始するには、以下のコードを試してください

Intent quiz_intent = new Intent(context, QuizScreen.class);
                        TimeAlarm.this.startActivity(quiz_intent);

基本的に、Nicklas が示唆したように、Receiver はコンテキストとしてカウントされないため、onReceive メソッドで取得するコンテキストを使用するか、context.getApplicationContext のように使用する必要があります。

于 2013-01-18T19:31:59.553 に答える
0

使用: Intent quiz_intent = new Intent(context, QuizScreen.class);の代わりにIntent quiz_intent = new Intent(TimeAlarm.this, QuizScreen.class);

例えば:

public class MyBroadcastReceiver extends BroadcastReceiver {

private NotificationManager mNotificationManager;
private int SIMPLE_NOTFICATION_ID;

@Override
public void onReceive(Context context, Intent intent) {

    mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notifyDetails = new Notification(R.drawable.android,"Time Reset!",System.currentTimeMillis());
    PendingIntent myIntent = PendingIntent.getActivity(context, 0, new Intent(context, Second.class), 0);
    notifyDetails.setLatestEventInfo(context, "Time changed", "Click on me to view my second activity", myIntent);
    notifyDetails.flags |= Notification.FLAG_AUTO_CANCEL;

    mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);`
于 2013-01-18T20:27:58.017 に答える