Звук уведомления Android остается нулевым - PullRequest
0 голосов
/ 30 ноября 2018

Я недавно начал кодировать свой действительно первый проект Android, который включает в себя уведомления.Я пишу SDK 21 (Android 5.0).

В настоящее время я отправляю уведомления, нажимая на кнопку в приложении, позже это будет сделано серверным скриптом.Под фактическим телом должна быть кнопка действия, которая делает вещи, когда я нажимаю на нее, а не открываю приложение.

Также я хочу настроить поведение уведомления, когда оно появляется, так что будет воспроизводиться пользовательский звук и устройство условно вибрирует.Для этого я использую NotificationCompat.Builder для создания уведомления и установки его свойств:

private void sendNotification() {
    String title = noteTitleEditText.getText().toString();
    String text = noteBodyEditText.getText().toString();

    Intent activityIntent = new Intent(this.getContext(), MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this.getContext(), REQUEST_CODE, activityIntent, PendingIntent.FLAG_ONE_SHOT);

    Intent broadcastIntent = new Intent(this.getContext, MyNotificationReceiver);
    broadcastIntent.putExtra("intent_key", "Action has been triggered");
    PendingIntent actionIntent = PendingIntent.getBroadcast(this.getContext, REQUEST_CODE, broadcastIntent, PendingIntent.FLAG_ONE_SHOT);

    Notification note = new NotificationCompat.Builder(this.getContext(), getString(R.string.channel_id))
            .setSmallIcon(R.mipmap.icon)
            .setContentTitle(title)
            .setContentText(text)
            .setSound(SettingsHandler.getRingtoneUri(this.getContext()))
            .setVibrate(SettingsHandler.shouldVibrateOnPush(this.getContext()) ? new long[] {1000} : new long[] {0})
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
            .setAutoCancel(true)
            .setContentIntent(contentIntent)
            .addAction(R.mipmap.another_icon, "Action", actionIntent)
            .build();

    NotificationManagerCompat manager = NotificationManagerCompat.from(this.getContext());
    manager.notify(0, note);
}

SettingsHandler - это вспомогательный класс, который предоставляет данные, выбранные пользователем, например, должно ли приложение вибрировать или какой звук должен воспроизводиться.getRingtoneUri возвращает Uri:

public synchronized static Uri getRingtoneUri(Context context) {
   SharedPreferences prefs = context.getSharedPreferences(context.getString(R.string.key), Context.MODE_PRIVATE);
   return Uri.parse(prefs.getString(context.getString(R.string.ringtone_uri), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION).toString()));
}

При тестировании это возвращает что-то вроде "content://media/internal/audio/media/31"

shouldVibrateOnPush возвращает логическое значение, которое указывает, должно ли устройство вибрировать или нет.

Однако консоль отладки говорит, что звук и шаблон вибрации по-прежнему нулевые.У кого-нибудь есть идея, что я делаю не так?Спасибо вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...