【问题标题】:Notification plays default sound instead of installed通知播放默认声音而不是安装
【发布时间】:2019-10-07 00:35:20
【问题描述】:

我正在尝试让 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 Uri 是否正确?

点击另一个按钮,应该会出现通知


 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());
            }
        });

aaand 它出现了,但是带有默认的系统通知声音,而不是用户安装的 请帮忙。我做错了什么?我想,也许我需要清单中的任何权限?

【问题讨论】:

标签: java android


【解决方案1】:

您是否在应用启动时创建通知渠道?在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2012-07-01
    相关资源
    最近更新 更多