我正在尝试使Uri进入系统铃声之一(用户自己保留)。然后此Uri在通知中使用。但是通知会播放默认声音,而不是由用户选择。这是用于打开声音选择活动的按钮的代码
ringtone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
startActivityForResult(intent, 5);
在此之后我得到URI
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 5){
uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
ringtone.setText(uri.toString());
}
}
例如,Uri选择后如下所示:CONTENT:// MEDIA / INTERNAL / AUDIO / MEDIA / 36 乌里正确吗?
并单击另一个按钮,应显示通知
music.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Resources res = context.getResources();
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentIntent(contentIntent).setSmallIcon(R.drawable.play25x25).setContentTitle("Title").setContentText("Text").setSound(uri).setChannelId("1");
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);;
NotificationChannel channel = new NotificationChannel("1", "name", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
notificationManager.notify(1, builder.build());
}
});
aa并显示,但带有默认的系统通知声音,而不是由用户安装的 请帮忙。我做错了什么?我想,也许我需要清单中的任何权限?
答案 0 :(得分:0)
应用启动时是否创建通知渠道?在App的onCreate()中。像这样
channelId = getString(R.string.notification_chat_channel);
channel = new NotificationChannel(channelId,
"Some channel name",
NotificationManager.IMPORTANCE_DEFAULT);
Uri uri = Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.push_sound);
channel.setSound(uri, att);
notificationManager.createNotificationChannel(channel);