我创建了一个按钮,显示点击通知。但我希望通知每天两次,下午1:45和晚上7:00自动显示。怎么做?
public class MainActivity extends AppCompatActivity {
NotificationCompat.Builder notification;
private static final int uniqueID = 45612 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notification = new NotificationCompat.Builder(this);
notification.setAutoCancel(true);
}
public void showMe(View view)
{
//build the notification
notification.setSmallIcon(R.drawable.bb);
notification.setColor(Color.rgb(85,85,85));
notification.setTicker("Time to nap");
notification.setWhen(System.currentTimeMillis());
notification.setContentTitle("NapApp");
notification.setContentText("Going gets tough? take a nap");
Intent intent = new Intent(this,MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); //gives access to intent to our app
notification.setContentIntent(pIntent);
//builds notification and issues it
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(uniqueID,notification.build());
}
}
答案 0 :(得分:1)
您必须使用AlarmManager执行此操作。 请按照Android提供的此文档提供。 https://developer.android.com/training/scheduling/alarms.html
答案 1 :(得分:0)
在一天内安排多次通知,使用给定的方法,它将在1.45 PM
& 7.00 PM
public void scheduleNotification() {
Calendar mfiringCal = Calendar.getInstance();
Calendar mcurrentCal = Calendar.getInstance();
mfiringCal.set(Calendar.HOUR_OF_DAY, 13);
mfiringCal.set(Calendar.MINUTE, 45);
mfiringCal.set(Calendar.SECOND, 0);
long intendedTime = mfiringCal.getTimeInMillis();
long currentTime = mcurrentCal.getTimeInMillis();
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if(intendedTime >= currentTime) {
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, mfiringCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, broadcast);
}else{
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mfiringCal.add(Calendar.DAY_OF_MONTH, 1);
intendedTime = mfiringCal.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC, intendedTime, AlarmManager.INTERVAL_DAY, broadcast);
}
/*-------------- 2nd Notification ------------- */
Calendar nFiringCal = Calendar.getInstance();
Calendar nCurrentCal = Calendar.getInstance();
nFiringCal.set(Calendar.HOUR_OF_DAY, 19);
nFiringCal.set(Calendar.MINUTE, 0);
nFiringCal.set(Calendar.SECOND, 0);
long intendedTime1 = nFiringCal.getTimeInMillis();
long currentTime1 = nCurrentCal.getTimeInMillis();
if(intendedTime1 >= currentTime1) {
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 101, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, nFiringCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, broadcast);
}else{
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 101, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
nFiringCal.add(Calendar.DAY_OF_MONTH, 1);
intendedTime = nFiringCal.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC, intendedTime, AlarmManager.INTERVAL_DAY, broadcast);
}
}