【发布时间】:2014-02-27 18:54:52
【问题描述】:
我不知道这是否是一个容易解决的愚蠢问题。我有一个铃声选择器,它显示默认铃声选项(用于通知)。像这样:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
startActivityForResult(intent, RingtoneManager.TYPE_NOTIFICATION);
然后我得到了结果:
protected void onActivityResult(int requestCode, int resultCode, Intent mRingtone) {
switch (requestCode) {
case RingtoneManager.TYPE_NOTIFICATION:
if (resultCode == RESULT_OK) {
notifToneUri = mRingtone.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
Log.d(TAG,"Uri = " + notifToneUri.toString() + " and title = " + ringtone.getTitle(this));
}
break;
}
}
发生了一件奇怪的事情,如果我选择“默认通知音”选项,uri 应该是:*content://settings/system/notification_sound* 但 uri 是 content ://settings/system/ringtone(这是铃声的默认值,而不是通知)。默认警报音也会发生同样的情况。
我是这样解决的:
if (notifToneUri.equals(Settings.System.DEFAULT_RINGTONE_URI)){
notifToneUri = Settings.System.DEFAULT_NOTIFICATION_URI;
}
好的,这行得通...但我想知道是否有更好的方法或者我做错了什么。
提前谢谢你。
【问题讨论】:
标签: android uri picker ringtone