Advertisement
Mujiburrohman

DailyReminder

Aug 5th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.27 KB | None | 0 0
  1. public class DailyReminder extends BroadcastReceiver {
  2.  
  3.     private static final int NOTIFICATION_ID = 101;
  4.  
  5.     public static final String NOTIFICATION_CHANNEL_ID = "10001";
  6.  
  7.  
  8.     @Override
  9.     public void onReceive(Context context, Intent intent) {
  10.         String appName = context.getString(R.string.app_name);
  11.         String message = context.getString(R.string.msg_daily_reminder);
  12.         showAlarmNotif(context, appName, message, NOTIFICATION_ID);
  13.  
  14.  
  15.     }
  16.  
  17.     public DailyReminder(){
  18.  
  19.     }
  20.  
  21.     private void showAlarmNotif(Context context, String title, String message, int notifId){
  22.         NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
  23.  
  24.         Intent intent = new Intent(context, MainActivity.class);
  25.         PendingIntent pendingIntent = PendingIntent.getActivity(context, notifId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  26.  
  27.         Uri alarmRingtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
  28.         NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
  29.                 .setSmallIcon(R.drawable.ic_alarm_black_24dp)
  30.                 .setContentTitle(title)
  31.                 .setContentText(message)
  32.                 .setContentIntent(pendingIntent)
  33.                 .setPriority(NotificationCompat.PRIORITY_HIGH)
  34.                 .setAutoCancel(true)
  35.                 .setColor(ContextCompat.getColor(context, android.R.color.transparent))
  36.                 .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
  37.                 .setSound(alarmRingtone);
  38.  
  39.  
  40.         if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
  41.             int importance = NotificationManager.IMPORTANCE_HIGH;
  42.             NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
  43.             notificationChannel.enableLights(true);
  44.             notificationChannel.setLightColor(Color.RED);
  45.             notificationChannel.enableVibration(true);
  46.             notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
  47.  
  48.             builder.setChannelId(NOTIFICATION_CHANNEL_ID);
  49.             notificationManager.createNotificationChannel(notificationChannel);
  50.         }
  51.  
  52.         notificationManager.notify(notifId, builder.build());
  53.     }
  54.  
  55.     private void setRepeatingAlrm(Context context){
  56.         cancelAlarm(context);
  57.         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  58.  
  59.         Calendar calendar = Calendar.getInstance();
  60.         calendar.set(Calendar.HOUR_OF_DAY, 7);
  61.         calendar.set(Calendar.MINUTE, 0);
  62.         calendar.set(Calendar.SECOND, 0);
  63.  
  64.         int SDK_INT = Build.VERSION.SDK_INT;
  65.         if (SDK_INT < Build.VERSION_CODES.KITKAT) {
  66.             alarmManager.set(AlarmManager.RTC_WAKEUP,
  67.                     calendar.getTimeInMillis(), getPendingIntent(context));
  68.         } else if (SDK_INT > Build.VERSION_CODES.KITKAT && SDK_INT < Build.VERSION_CODES.M) {
  69.             alarmManager.setInexactRepeating(
  70.                     AlarmManager.RTC_WAKEUP,
  71.                     calendar.getTimeInMillis(),
  72.                     AlarmManager.INTERVAL_DAY,
  73.                     getPendingIntent(context)
  74.             );
  75.         } else if (SDK_INT >= Build.VERSION_CODES.M) {
  76.             alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
  77.                     calendar.getTimeInMillis(), getPendingIntent(context));
  78.         }
  79.  
  80.     }
  81.  
  82.     public void cancelAlarm(Context context) {
  83.  
  84.         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  85.  
  86.         alarmManager.cancel(getPendingIntent(context));
  87. //        notificationManager.cancelAll();
  88.     }
  89.  
  90.     private static PendingIntent getPendingIntent(Context context) {
  91.         Intent alarmIntent = new Intent(context, DailyReminder.class);
  92.  
  93.         boolean isAlarmOn = (PendingIntent.getBroadcast(context, NOTIFICATION_ID, alarmIntent, PendingIntent.FLAG_NO_CREATE) != null);
  94.  
  95.         Log.e("isAlarmOn : ", String.valueOf(isAlarmOn));
  96.  
  97.         return PendingIntent.getBroadcast(context, NOTIFICATION_ID, alarmIntent,
  98.                 PendingIntent.FLAG_CANCEL_CURRENT);
  99.     }
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement