Я недавно начал кодировать свой первый проект для Android, включая уведомления (SDK 21 - Android 5)
В настоящее время у меня есть маленькая маленькая кнопка, которая при нажатии создает уведомление и отправляет его в само приложение.Звучит глупо, но цель состоит в том, чтобы проверить, используется ли пользовательский шаблон звука и вибрации.
Это уведомление, которое создается при нажатии:
Notification note = new Notification.Builder(this.requireContext(), "channel_id")
.setSmallIcon(R.mipmap.icon)
.setContentTitle("Title")
.setContentText("Text")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setVibrate(new long[] {500, 500, 500, 500, 500})
.setSound(SettingsHandler.getRingtoneUri(this.requireContext())
.setContentIntent(anyIntent)
.setAutoCancel(true)
.build();
SettingsHandler
- вспомогательный классЯ создал для обработки настроек.Например, включить или выключить вибрацию или выбрать мелодию звонка.getRingtoneUri()
выполняет следующие действия:
public synchronized static Uri getRingtoneUri(Context context) {
SharedPreferences prefs = context.getSharedPreferences("table_name", Context.MODE_PRIVATE);
return Uri.parse(prefs.getString("ringtone_uri_key", RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION).toString()));
}
При отладке этого результата результат getRingtoneUri
выглядит как "content://media/internal/audio/media/31"
.Это выглядит актуально для меня.Однако в более поздней строке свойство звука созданного уведомления по-прежнему равно нулю.Эми, что я делаю не так?Спасибо вперед.