有没有办法自定义 Android 铃声选择器对话框?

Posted

技术标签:

【中文标题】有没有办法自定义 Android 铃声选择器对话框?【英文标题】:Is there a way to customize the Android Ringtone Picker Dialog? 【发布时间】:2012-01-26 16:48:12 【问题描述】:

我使用以下代码显示一个对话框,用于选择一种本地铃声/文本铃声:

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));

我这样调用上面的方法:

用于选择文本音调: showTonePicker(RingtoneManager.TYPE_NOTIFICATION, getString(R.string.texting_tone)); 选择铃声: showTonePicker(RingtoneManager.TYPE_RINGTONE, getString(R.string.ringing_tone));

我有两个问题要解决:

    我必须显示小写按钮

    在这两种情况下(即选择铃声和选择文本铃声时),本机 dialof 显示“默认铃声”。如果选择文本音(在本例中为toneType = RingtoneManager.TYPE_NOTIFICATION),我必须显示“默认文本音”。

有没有办法解决这些问题?我们可以自定义原生音色选择器吗?

提前感谢您的回答!

问候。

【问题讨论】:

有没有办法预先选择默认铃声/文本(通知)音? “intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,Settings.System.DEFAULT_RINGTONE_URI);”好像不行。 我遇到了同样的问题,我不敢相信没有人知道答案,尽管这是一项非常常见的任务。你还没找到答案吗? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

我们可以自定义原生音色选择器吗?

不,抱歉,与您描述的项目无关。您需要为此构建自己的 UI。

【讨论】:

【参考方案3】:

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

您可能会实现自定义 RingtonePreference 和自定义 RingtonePickerActivity 并强制打开自定义铃声选择器,但您可能会激怒您的用户。

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

【讨论】:

以上是关于有没有办法自定义 Android 铃声选择器对话框?的主要内容,如果未能解决你的问题,请参考以下文章

无法为通知android设置铃声

Android为用户自定义号码设置自定义铃声

如何在android中制作带有圆角的自定义对话框

Android:时间选择器和日期选择器在同一个对话框中

有没有办法将我在 Android 上的自定义渲染器复制到 iOS 平台?

iOS - 自定义 iPhone 铃声