通知播放默认声音而不是安装声音

时间:2019-10-06 14:37:14

标签: java android

我正在尝试使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并显示,但带有默认的系统通知声音,而不是由用户安装的 请帮忙。我做错了什么?我想,也许我需要清单中的任何权限?

1 个答案:

答案 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);