在 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();
}
我正在开发一个 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();
}