Witam.
Od kliku dni zastanawiam się jak zaprogramować powiadomienia aplikacji, które miałyby pojawiać się codziennie o konkretnej godzinie.
Oto kod, który do tej pory udało mi się wystrugać;
Oto plik głównej aktywności (FullScreenActivity.java):
package pl.bartoszbieniek.mojaapka;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import java.util.Calendar;
public class FullscreenActivity extends AppCompatActivity {
private void setNotifications(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,21);
calendar.set(Calendar.MINUTE,00);
Intent intent = new Intent(getApplicationContext(), Notification_receiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),alarmManager.INTERVAL_DAY,pendingIntent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("raz", false)) {
setNotifications();
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("raz", true);
editor.commit();
}
}
}
Oraz plik Notification_receiver.java:
package pl.bartoszbieniek.mojaapka;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.NotificationCompat;
public class Notification_receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent1 = new Intent(context,FullscreenActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context,100,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context).
setSmallIcon(R.drawable.ic_launcher_foreground).
setContentIntent(pendingIntent).
setContentText("Powiadomienie").
setContentTitle("opis").
setAutoCancel(true);
notificationManager.notify(100,builder.build());
}
}
Problem pojawia się w.... Sam nie wiem gdzie. Znalazłem na internecie filmik, w którym nastolatek z Indii ma identyczny kod jak mój i u niego uruchamia się bez zarzutu. Jedyną różnicą jest to, że ów młodzieniec uruchamia funkcję przyciskiem, natomiast ja, odpalam ją jednorazowo zaraz po zainstalowaniu aplikacji.
Czy ktoś mógłby mi podpowiedzieć co robię źle lub czego mi brakuje?
Z góry dziękuję.