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

问题描述 投票:5回答:3

我使用以下代码显示一个用于选择其中一个原生铃声/文本音的对话框:

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

我有两个问题需要解决:

  1. 我必须显示较低的套管按钮
  2. 在这两种情况下(即,当选择铃声时以及选择文本音调时),原生拨号显示“默认铃声”。在选择文本音调时,我必须显示“默认文本音调”(在本例中为toneType = RingtoneManager.TYPE_NOTIFICATION)。

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

谢谢你的答案提前!

问候。

android customization ringtone
3个回答
0
投票

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

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

0
投票

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

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


0
投票

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

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

如果我可能会问,你还有什么理由要改变它?

© www.soinside.com 2019 - 2024. All rights reserved.