【问题标题】:Notification activity called by AlarmManager NOT to pop up when app is closed当应用程序关闭时,AlarmManager 调用的通知活动不会弹出
【发布时间】:2012-10-04 14:42:08
【问题描述】:

对于自定义提醒应用,我使用AlarmManagerPendingIntent 设置弹出Notification 的特定时间。

我在ReceiverActivity 中有我的NotificationManager

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm_receiver);
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager)
            getSystemService(ns);
    Context context = getApplicationContext();
    CharSequence ticker = "You have notification";
    CharSequence contentTitle = "My Reminder";
    CharSequence contentText = "Reminder Content";
    Notification notification = new Notification(R.drawable.notif_icon,
            ticker, System.currentTimeMillis());
    Intent notificationIntent = new Intent(this,
            AlarmReceiverActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        notificationIntent, 0);
    notification.setLatestEventInfo(context, contentTitle, contentText,
        contentIntent);
    final int HELLO_ID = 1;
    mNotificationManager.notify(HELLO_ID, notification);
}

ReceiverActivity在指定时间弹出,加上通知栏(左上角)的通知,一切正常。但它不是那么用户友好,我只希望通知出现在通知栏中,而不会在应用关闭时弹出任何活动(在实际情况下,可能在您的提醒到期时关闭)

【问题讨论】:

  • 实际上我需要做的就是将 ReceiverActivity 设置为透明,这可以通过更改 xml 中的主题来实现,但我还没有一个可行的解决方案
  • 请发布更多代码,我感觉你在 AlarmManager 调用中启动了错误的东西,但如果没有看到代码就无法判断。

标签: android notifications android-activity android-pendingintent


【解决方案1】:

定义您的AlarmManagerPendingIntent 以由BroadcastReceiver 接收

Intent i = new Intent(context, YourReceiver.class);
PendingIntent alarmPendingIntent= PendingIntent.getBroadcast(context, 0, i,
            PendingIntent.FLAG_UPDATE_CURRENT);

然后

public class YourReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // use a BUILDER all this is deprecated
        CharSequence ticker = "You have notification";
        CharSequence contentTitle = "My Reminder";
        CharSequence contentText = "Reminder Content";
        Notification notification = new Notification(R.drawable.notif_icon,
                ticker, System.currentTimeMillis());
        Intent notificationIntent = new Intent(this,
                AlarmReceiverActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            notificationIntent, 0);
        notification.setLatestEventInfo(context, contentTitle, contentText,
            contentIntent);
        // post notification
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager)
                context.getSystemService(ns);
        final int HELLO_ID = 1;
        mNotificationManager.notify(HELLO_ID, notification);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多