1. Create a Method on your Activity and Call it on Oncreate
private void fireNotification(){
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent alarmIntent = new Intent(this, MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmIntent.setData((Uri.parse("custom://"+System.currentTimeMillis())));
alarmManager.cancel(pendingIntent);
Calendar alarmStartTime = Calendar.getInstance();
Calendar now = Calendar.getInstance();
alarmStartTime.set(Calendar.HOUR_OF_DAY, 7);
alarmStartTime.set(Calendar.MINUTE, 30);
alarmStartTime.set(Calendar.SECOND, 0);
if (now.after(alarmStartTime)) {
Log.d("Hey","Added a day");
alarmStartTime.add(Calendar.DATE, 1);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Log.d("Alarm","Alarms set for everyday 7.30 am.");
}
2. Create a BroadcastReceiver class
package com.arifhasnat.booksapp.services;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Intent intent1 = new Intent(context, MyNewIntentService.class);
context.startService(intent1);
}
}
3. Create a IntentService class
package com.arifhasnat.booksapp.services;
import android.app.IntentService;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioAttributes;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import androidx.core.app.NotificationCompat;
import com.arifhasnat.booksapp.activities.HomeActivity;
import devsbrain.tafsiribnkathir.R;
public class MyNewIntentService extends IntentService {
private static final int NOTIFICATION_ID = 3;
public MyNewIntentService() {
super("MyNewIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
String message = getString(R.string.notification_message);
String title = getString(R.string.notification_head);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("channel_1",
"Channel_1",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription(message);
mNotificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), "channel_1")
//.setSound(customSoundUri)
.setSmallIcon(R.drawable.ic_icon) // notification icon
.setContentTitle(title) // title for notification
//.setContentText(message)// message for notification
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message))
.setAutoCancel(true); // clear notification after click
intent = new Intent(getApplicationContext(), HomeActivity.class);
PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pi);
//Notification sound
try {
//Uri notification = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/" + R.raw.islamic);
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
mNotificationManager.notify(0, mBuilder.build());
}
}
4. Finally Add receiver and service on Menifest
<receiver android:name="com.arifhasnat.booksapp.services.MyReceiver" android:enabled="true"
android:exported="false"></receiver>
<service
android:name="com.arifhasnat.booksapp.services.MyNewIntentService"
android:exported="false" >
</service>