Я хочу добавить уведомления в свое приложение.Я хочу, чтобы это показывалось каждый день в определенный час.Я пытался сделать это с .setWhen, но это не работает.Я хотел также установить вибрацию и звук, но это не работает.Уведомление отображается немедленно.
public class Activity_addMedicine extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
private NotificationManagerCompat notificationManager;
public static long time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_medicine);
notificationManager = NotificationManagerCompat.from(this);
Button buttonOK = (Button) findViewById(R.id.button_OK2);
buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment timePicker = new TimePicker();
timePicker.show(getSupportFragmentManager(), "time picker");
}
});
}
@Override
public void onTimeSet(android.widget.TimePicker view, int hourOfDay, int minute) {
Calendar c = getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
time = c.getTimeInMillis();
}
public void sendOnChannel1(View view) {
Notification notification = new NotificationCompat.Builder(this, App.CHANNEL_1_ID)
.setSmallIcon(R.drawable.icon)
.setContentTitle("POWIADOMIENIE - TEST")
.setContentText("Przypomnienie o wzieciu leku")
.setWhen(time)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setSound(
RingtoneManager.getDefaultUri(
RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
.setCategory(NotificationCompat.CATEGORY_ALARM)
.build();
notificationManager.notify(1, notification);
}
public void sendOnChannel2(View view) {
Notification notification = new NotificationCompat.Builder(this, App.CHANNEL_2_ID)
.setSmallIcon(R.drawable.icon)
.setWhen(time)
.setContentTitle("POWIADOMIENIE - TEST [2]")
.setContentText("Przypomnienie o wzieciu leku " + time)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setSound(
RingtoneManager.getDefaultUri(
RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
.setCategory(NotificationCompat.CATEGORY_ALARM)
.build();
notificationManager.notify(2, notification);
}}
Вот класс App.java, где создаются каналы:
public class App extends Application {
public static final String CHANNEL_1_ID = "channel1";
public static final String CHANNEL_2_ID = "channel2";
@Override
public void onCreate() {
super.onCreate();
createNotificationChannels();
}
private void createNotificationChannels() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel1 = new NotificationChannel(
CHANNEL_1_ID,
"Channel 1",
NotificationManager.IMPORTANCE_HIGH
);
channel1.setDescription("This is Channel 1");
NotificationChannel channel2 = new NotificationChannel(
CHANNEL_2_ID,
"Channel 2",
NotificationManager.IMPORTANCE_HIGH
);
channel2.setDescription("This is Channel 2");
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(channel1);
manager.createNotificationChannel(channel2);
}
}
}
Я также добавил в AndroidManifest.xlm два разрешения:
использование-разрешение android: name = "android.permission.SET_ALARM"
использование-разрешение android: name = "android.permission.VIBRATE"