2

我发现了很多关于这个问题的 Stack Overflow 帖子,但它们都使用现在已弃用的 Notification 方法,而不是使用 Notification.Builder 类。

我已成功创建状态栏通知,但单击时没有任何反应。LogCat 中出现警告:

Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@412d6df0

这是我用来构建通知的代码:

public class LunchNotificationBuilder {

private Notification notification;
public LunchNotificationBuilder(Lunch lunch, Context context) {
    Builder builder = new Builder(context);
    Calendar reminderTime = (Calendar)lunch.getReminderTime().clone();
    builder.setWhen(reminderTime.getTimeInMillis());
    builder.setTicker("Reminder for " + lunch.getTitle());
    builder.setContentTitle("LunchBunch Notification");
    builder.setContentText("Upcoming lunch at " + lunch.getTitle());
    builder.setSmallIcon(R.drawable.ic_launcher);
    Intent intent = new Intent(context, InviteDetails.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    builder.setContentIntent(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT));
    this.notification = builder.getNotification();
}

public Notification getNotification() {
    return this.notification;
}

}

午餐类只是我创建的一个数据结构,不用担心。

传入的 Context 是 Application.getApplicationContext()。

我正在按照文档的建议设置 Intent.FLAG_ACTIVITY_NEW_TASK 标志,并且 PendingIntent 具有 PendingIntent.FLAG_ONE_SHOT 标志。

另一个注意事项:当我在代码的其他地方显式调用 startActivity 时,我尝试启动的活动 (InviteDetails) 工作得很好。关于这个 PendingIntent 业务的某些东西不起作用。

4

1 回答 1

0

原来我不知道如何使用Android。我单击顶部的状态栏,而不是在单击之前向下拖动以查看完整通知。我的代码正在运行。哦!

于 2012-05-08T16:55:50.573 回答