I'm very debutant in programming. It's the first time that I post here. Sorry if my question seems ridiculous.
I'm creating an ephemeride application, that display a quote for each day and that send a notification notification at some specific days and hours. But the notification doesn't occur.
For exemple, each 25th december, I would like that the app send a notification related to the event of the day, even if the application is closed.
I have try several thing, but it doesn't work.
Thanks for your help.
My current codes (where I have only tried to set the hour of the notification) :
MainActivity :
package fr.me.ephemeride;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public static void startAlarmBroadcastReceiver(Context context) {
Intent _intent = new Intent(context, AlarmBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, _intent, PendingIntent.FLAG_IMMUTABLE);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
AndroidManifest :
<receiver android:name=".AlarmBroadcastReceiver" />
AlarmBroadcastReceiver :
package fr.me.ephemeride;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
public class AlarmBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
showNotification(context);
}
void showNotification(Context context) {
Intent intent = new Intent(context, calendrier_japonais.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context,"My notification");
builder.setContentTitle("Notification test");
builder.setContentText("My text");
builder.setSmallIcon(R.drawable.icon_nebra_foreground);
builder.setAutoCancel(true);//permet de faire glisser la notification sur le côté afin de la faire disparaître
builder.setContentIntent(pendingIntent);//permet d'aller à la classe souhaitée lorsque on tape sur la notification
builder.setOnlyAlertOnce(true);//évite que que la même notification apparaisse plusieurs fois
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(context);
managerCompat.notify(1,builder.build());
}
}