我有一个用于创建通知的课程。课程是这样的:
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
我哪里错了?我该如何解决这个问题?
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
广播接收器不算作上下文? 使用onReceive中的context参数(Context context,Intent intent)来代替
答案 2 :(得分:1)
尝试下面的代码来启动活动
Intent quiz_intent = new Intent(context, QuizScreen.class);
TimeAlarm.this.startActivity(quiz_intent);
基本上,正如尼克拉斯所说,Receiver并不算作上下文,所以你需要使用上传你的onReceive方法,或者像context.getApplicationContext一样使用它。
答案 3 :(得分: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);`