【发布时间】:2019-06-13 10:59:32
【问题描述】:
我正在尝试创建本地通知,该通知在给定日期之前 2 小时、4 小时和在这个给定日期之前结束。这是我的代码,但它不起作用:
private void alarmnotification(String notificationid, String type, long timemills) {
Random rand = new Random();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timemills);
AlarmManager mgrAlarm = (AlarmManager)getSystemService(ALARM_SERVICE);
ArrayList<PendingIntent> intentArrayd = new ArrayList<PendingIntent>();
for(int i = 0; i < 4; ++i)
{
long timemfills = timemills - 7200000*i ;
Calendar calendadr = Calendar.getInstance();
calendadr.setTimeInMillis(timemfills);
Calendar calendad0r = Calendar.getInstance();
calendad0r.setTimeInMillis(SystemClock.elapsedRealtime()+calendadr.getTimeInMillis());
Intent intent = new Intent(getApplicationContext(), NotificationPublisher.class);
intent.putExtra("type", type);
intent.putExtra("notificationId", notificationid);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Home.this, i, intent, 0);
mgrAlarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, timemfills, pendingIntent);
intentArrayd.add(pendingIntent);
}
}
这是我的通知发布者代码: 公共类 NotificationPublisher 扩展 BroadcastReceiver {
public static String NOTIFICATION_ID = "notificationId";
public static String NOTIFICATION = "type";
private LocalBroadcastManager broadcaster;
public void onReceive(Context context, Intent intent) {
// Get id & message from intent.
String notificationId = intent.getStringExtra("notificationId");
String message = intent.getStringExtra("type");
// When notification is tapped, call MainActivity.
Intent mainIntent = new Intent(context, Home.class);
mainIntent.putExtra("retour", message);
mainIntent.putExtra("element_id", notificationId);
mainIntent.setAction(Long.toString(System.currentTimeMillis()));
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, mainIntent, 0);
NotificationManager myNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Prepare notification.
Notification.Builder builder = new Notification.Builder(context);
builder.setSmallIcon(R.drawable.icoapp_and)
.setContentTitle(notificationId)
.setContentText(message)
.setAutoCancel(true)
.setContentIntent(contentIntent)
.setWhen(System.currentTimeMillis())
.setPriority(Notification.PRIORITY_MAX)
.setDefaults(Notification.DEFAULT_ALL);
// Notify
Random rand = new Random();
myNotificationManager.notify(rand.nextInt(), builder.build());
}
}
问题是我根本没有收到任何通知。
【问题讨论】:
-
可以添加 NotificationPublisher 代码吗?
-
这是我的接收方法:
-
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, mainIntent, 0); NotificationManager myNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
-
Notification.Builder builder = new Notification.Builder(context); builder.setSmallIcon(R.drawable.icoapp_and) .setContentTitle(notificationId) .setContentText(message) .setAutoCancel(true) .setContentIntent(contentIntent) .setWhen(System.currentTimeMillis()) .setPriority(Notification.PRIORITY_MAX) .setDefaults(Notification .DEFAULT_ALL);
-
随机 rand = new Random(); myNotificationManager.notify(rand.nextInt(), builder.build());
标签: android alarmmanager localnotification