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

时间:2012-01-26 16:48:13

标签: android customization ringtone

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

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

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

    提前感谢您的答案!

    问候。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  

我们可以自定义本机音色选择器吗?

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

答案 2 :(得分:0)

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

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

如果我要问的话,您为什么要更改它?