【发布时间】: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 它出现了,但是带有默认的系统通知声音,而不是用户安装的 请帮忙。我做错了什么?我想,也许我需要清单中的任何权限?
【问题讨论】: