在 android oreo 及更高版本的默认权限设置下允许声音

allow sound on default permission settings on android oreo and higher

我正在开发一个 android 应用程序,我需要在其中向用户显示通知。 问题是没有播放通知声音。振动虽然工作正常。 检查应用程序设置时,默认情况下禁用 'allow sound' 选项。当我启用它时,一切正常。但是我需要默认启用它。 like this

清单中确实存在这两个权限。

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.VIBRATE" />

这是我用来创建通知渠道和显示通知的代码片段。

if (Build.VERSION.SDK_INT >= 26) {
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, title,NotificationManager.IMPORTANCE_HIGH);

        AudioAttributes attributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                .build();
        channel.setSound(alarmSound, attributes);
        channel.enableLights(true);
        channel.enableVibration(true);

        ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);

        Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
                .setSmallIcon(R.drawable.ic_logo)
                .setContentTitle(title)
                .setSound(alarmSound)
                .setAutoCancel(true)
                .setVibrate(new long[]{500L,500L,500L})
                .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setContentText(stringBuilder.toString().trim()).build();
        NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(NOTIF_ID, notification);
}

我找不到默认激活 'allow sound' 的解决方案。 但这个变通办法完成了工作。

显示通知后,我这样做是为了独立播放通知声音。

try {
      Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
      Ringtone r = RingtoneManager.getRingtone(context, uri);
      r.play();
} catch (Exception e) {
      e.printStackTrace();
}