我正试图在上午9点创建一个自动通知。
我创建了以下代码,但我无法获得自动通知。
而且,我确实在Android Manifest文件中添加了所需的权限。
在MainActivity.class
'onCreate
方法中,我调用了该函数:
setAlarm();
public void setAlarm() {
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), Notifications.class);
alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 1001, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_now = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 30);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 1, alarmIntent);
if(calendar_now.getTimeInMillis() == calendar.getTimeInMillis()) {
new Notifications().createNotification(getApplicationContext(), getIntent(), "Stock-Market Alert", "The Market opens shortly.");
}
}
Notifications.class如下:
public class Notifications extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String notificationTitle = "Default Title", notificationMessage = "Default Message";
createNotification(context, intent, notificationTitle, notificationMessage );
}
public void createNotification(Context context, Intent intent, String notificationTitle, String notificationMessage) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1001,
new Intent(context, Repeating_activity.class), PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle(notificationTitle)
.setContentText(notificationMessage)
.setTicker("Alert Message !")
.setAutoCancel(true)
.setSmallIcon(android.R.drawable.stat_sys_warning);
builder.setContentIntent(pendingIntent);
builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE);
builder.setDefaults(NotificationCompat.DEFAULT_SOUND);
notificationManager.notify(1001, builder.build());
}
}
答案 0 :(得分:0)
这种情况正在发生,因为您正在尝试比较毫秒,很少您将匹配相同的毫秒(不要说几乎从不)。另外,添加逻辑以比较Receiver上的时间。请尝试以下代码:
public void onReceive(Context context, Intent intent) {
Calendar cal = Calendar.getInstance();
int currentHour = cal.get(Calendar.HOUR);
int currentMinute = cal.get(Calendar.MINUTE);
if (currentHour == 9 && currentMinute == 00) {
String notificationTitle = "Default Title", notificationMessage = "Default Message";
createNotification(context, intent, notificationTitle, notificationMessage );
}
}
你的setAlarm()方法可以很简单:
public void setAlarm(){
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), Notifications.class);
alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 1001, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 1, alarmIntent);
}