我正在构建一个在IST 11:30触发通知的应用程序.我已经对其进行了测试,但是11:30之后,每当我打开我的应用程序时,它都会发出通知...
I am building an app which triggers a notification at 11:30 IST..I have Tested It Its Working But After 11:30 Whenever i open my app it issues a notification...
我不知道为什么我认为在检查时间时应该出现一些错误...
i don't know why i think it should be some error in condition in time checking...
我希望每天仅准时触发一次通知,然后第二天……:)
i want notification to be triggered on time only once in a day...and then the next day...:)
请解决此问题 预先感谢
please resolve this thanks in advance
**MainActivity.java** @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = (ProgressBar)findViewById(R.id.progressBar); spinner.setVisibility(View.GONE); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 11); calendar.set(Calendar.MINUTE, 30); calendar.set(Calendar.SECOND, 00); Intent intent1 = new Intent(MainActivity.this, AlarmReciever.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,intent1, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); } **AlarmReciever.java** package com.alivestats.alivestats; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.media.RingtoneManager; import android.Uri; import android.support.v4.app.NotificationCompat; public class AlarmReciever extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub int MID = 1; long when = System.currentTimeMillis(); NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(context, MainActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder( context).setSmallIcon(R.drawable.background) .setContentTitle("title") .setContentText("description").setSound(alarmSound) .setAutoCancel(true).setWhen(when) .setContentIntent(pendingIntent) .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000}); notificationManager.notify(MID, mNotifyBuilder.build()); MID++; } }推荐答案
在喝了很多茶和咖啡之后,我自己编写了答案...
After So Much Of Tea and Coffee i coded the answer myself...
long t = System.currentTimeMillis(); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 11); calendar.set(Calendar.MINUTE, 30); calendar.set(Calendar.SECOND, 00); if (t <= calendar.getTimeInMillis()) { //calendar.add(Calendar.DATE, 6); //add 6 days. Intent intent1 = new Intent(MainActivity.this, AlarmReciever.class); intent1.setAction("NOTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); //am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); } else{ }我刚刚将系统时间与通知时间进行了比较..如果通知时间小于等于系统时间,则它的真实性和接收者将起作用.但是,如果不是,则什么也不会发生...
i have just compared system time to the notification time..if notifcation time is less than equal to system time its true and reciever will work..but if not then nothing will happen...
顺便说一句,感谢您帮助@tiny和@Mahesh
BTW thanks for helping @tiny and @Mahesh
更多推荐
每当我打开应用程序时,计划通知就会触发
发布评论