有没有一种方法可以自定义 Android 铃声选择对话框?

4

我使用以下代码显示选择本机铃声/短信提示音的对话框:

private void showTonePicker(int toneType, String pickerTitle) {
[...]

意图 intent = new 意图(RingtoneManager.ACTION_RINGTONE_PICKER);

该代码片段创建了一个名为“intent”的Intent对象,并使用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));
}

我如下方式调用以上方法:
  • 选择文本音调:showTonePicker(RingtoneManager.TYPE_NOTIFICATION, getString(R.string.texting_tone));
  • 选择铃声:showTonePicker(RingtoneManager.TYPE_RINGTONE, getString(R.string.ringing_tone));

我需要解决两个问题:

  1. 必须显示小写按钮。

  2. 在选择铃声和选择文本音调时,原生对话框都会显示“默认铃声”。如果选择文本音调(此时toneType = RingtoneManager.TYPE_NOTIFICATION),则必须显示“默认文本音调”。

有办法解决这些问题吗?我们能否自定义原生音调选择器?

提前感谢您的回答!

敬礼。


有没有一种方法可以预先选择默认的铃声/文本(通知)音调?“intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,Settings.System.DEFAULT_RINGTONE_URI);”似乎不起作用。 - Trimi
我曾经遇到过同样的问题,不敢相信没有人知道答案,因为这是一个非常普遍的任务。你还没有找到答案吗? - Vitalii Korsakov
3个回答

0

我不确定这是可能的。此外,RingtonePreference没有保证会打开系统的铃声选择器。用户可能已经安装了另一个应用程序,该应用程序在清单中声明了android.intent.action.RINGTONE_PICKER意图过滤器,并且甚至将其作为默认铃声选择器。

您可以实现自定义RingtonePreference和自定义RingtonePickerActivity,并强制打开您的自定义铃声选择器,但这可能会使您的用户感到烦恼。

如果我可以问一下,您想更改它的原因是什么?


0
我们可以自定义本地音调选择器吗?
不好意思,对于您描述的项目来说是不行的。您需要为此构建自己的用户界面。

0

要设置默认铃声,您必须先设置EXTRA_RINGTONE_EXISTING_URI。

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtoneUri);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接