我使用以下代码显示一个用于选择其中一个原生铃声/文本音的对话框:
private void showTonePicker(int toneType, String pickerTitle) {
[...]
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, toneType);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, pickerTitle);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, userTone.equals(TFSettings.SILENT_TONE_ID) ? null : Uri.parse(userTone));
startActivityForResult(intent, (toneType == RingtoneManager.TYPE_RINGTONE ? 1 : 2));
}
我这样调用上面的方法:
我有两个问题需要解决:
有办法解决这些问题吗?我们可以自定义原生音调选择器吗?
谢谢你的答案提前!
问候。
要设置默认铃声,您必须先设置EXTRA_RINGTONE_EXISTING_URI。
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtoneUri);
我们可以自定义原生音调选择器吗?
不,抱歉,不是您描述的项目。您需要为此构建自己的UI。
我不确定这是可能的。此外,无法保证RingtonePreference会打开系统的铃声选择器。用户可能安装了另一个应用程序,该应用程序具有在清单中声明的android.intent.action.RINGTONE_PICKER intent过滤器的活动,他甚至可能将其作为默认的铃声选择器。
您可以实现自定义RingtonePreference和自定义RingtonePickerActivity,并强制您的自定义铃声选择器打开,但您可能会激怒您的用户。
如果我可能会问,你还有什么理由要改变它?