为什么在设置为媒体播放器的数据源时,RingtoneManager 返回的铃声 uri 失败

Why the ringtone uri returned by RingtoneManager fails when being set as data source for a Media Player

我正在尝试为 Anndroid Media Player 设置数据源。我正在使用以下代码。

Uri alarmUri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM);
// alarm_uri = null

if (alarmUri == null) {
   alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

  // alarm_uri = "content://settings/system/notification_sound"
}

alarmMediaPlayer = new MediaPlayer();
alarmMediaPlayer.setDataSource(this, alarmUri);

设置数据源时,抛出以下错误:

"setDataSource failed.: status=0x80000000"

当我在另一个 phone 上测试相同的代码时,我得到 alarm_uri 的值 "content://media/internal/audio/media/44"。我觉得造成问题的 phone 有问题。

谁能告诉我可能是什么问题?

RingtoneManager.TYPE_NOTIFICATIONRingtoneManager.TYPE_ALARM 都返回无效值作为 URI,因为警报和通知在设备中设置为 none。一旦设置为特定值,它就会开始返回有意义的值。