繁体   English   中英

通过广播接收者和点击操作安排通知

[英]Scheduling Notifications with broadcast reciever and actions on click

我是Android的新手,目前正在学习通知,我正在制作一个小应用程序,该应用程序将在以后显示通知,并在用户点击通知时打开一个活动。 我一直在寻找整个Internet上的内容,但真的不了解如何同时完成这两项任务。 我正在使用广播接收器,这是我的代码

    Notification.Builder builder = new Notification.Builder(getActivity());
    builder.setContentTitle("Remember to return");
    builder.setContentText(title);
    builder.setSmallIcon(R.drawable.ic_notification);
    builder.setAutoCancel(true);

    //NotificationCompat.Builder builder = new NotificationCompat.Builder(getActivity());

    Notification notification = builder.build();

    Intent notificationIntent = new Intent(getActivity(),NotificationPublisher.class);

    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID,1);
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION,notification);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(activity,0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);


    //long _notificationTimeInMillis = SystemClock.elapsedRealtime()+date.getTime()+getMillisFromHours(6);
    long notificationTimeInMillis = SystemClock.elapsedRealtime() + 5000;
    AlarmManager alarmManager = (AlarmManager)activity.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,notificationTimeInMillis,pendingIntent);
    Toast.makeText(activity,"Notification Set",Toast.LENGTH_SHORT);

和收货人

public class NotificationPublisher extends BroadcastReceiver {

    public static String NOTIFICATION_ID = "notification-id";
    public static String NOTIFICATION = "notification";
    @Override
    public void onReceive(Context context, Intent intent) {

        NotificationManager notificationManager = (NotificationManager)
                context.getSystemService(Context.NOTIFICATION_SERVICE);

        Notification notification = intent.getParcelableExtra(NOTIFICATION);
        int id = intent.getIntExtra(NOTIFICATION_ID, 0);
        notificationManager.notify(id, notification);
    }
}

目前,我可以显示通知,我必须进行哪些更改,以便用户单击通知时可以打开一个活动(例如HomeActivity.class )。

您需要在通知本身上设置待处理的意图,以打开活动:

Notification.Builder builder = new Notification.Builder(getActivity());
builder.setContentTitle("Remember to return");
builder.setContentText(title);
builder.setSmallIcon(R.drawable.ic_notification);
builder.setAutoCancel(true);

// add these lines
PendingIntent pi = PendingIntent.getActivity(
    getActivity(),
    REQUEST_CODE_FOR_THIS_ONE,
    new Intent(getActivity(), HomeActivity.class),
    0
);
builder.setContentIntent(pi);

Notification notification = builder.build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM