【发布时间】:2015-11-24 10:25:26
【问题描述】:
我想开发一个消息应用程序。在这个消息应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户选择短信铃声时,短信铃声的名称将在文本视图中设置,铃声将设置为默认短信铃声。我怎样才能做到这一点 ?
【问题讨论】:
标签: android notifications sms ringtone
我想开发一个消息应用程序。在这个消息应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户选择短信铃声时,短信铃声的名称将在文本视图中设置,铃声将设置为默认短信铃声。我怎样才能做到这一点 ?
【问题讨论】:
标签: android notifications sms ringtone
无论你做什么。这段代码肯定会做你想做的事!!
selsound_button.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
Uri currenturi = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 1l);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currenturi);
startActivityForResult( intent, 999);
}
});
RingtoneManager.setActualDefaultRingtoneUri(
myActivity, RingtoneManager.TYPE_RINGTONE, currenturi);
添加清单文件是必须的
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
uri 不是 rigntone 的名字
Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
String title = ringtone.getTitle(this);
用它来方便你
【讨论】:
试试这个:
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRintoneUri);
【讨论】:
我会为用户提供一个偏好屏幕。 Ritones有一个特殊条目:<RingtonePreference />
<PreferenceScreen>
<RingtonePreference
android:title="Current Ringtone"
android:key="ring" />
</PreferenceScreen>
使用该属性后,rintone 将使用密钥ring 保存在您的首选项中。
如果您不想使用首选项屏幕,您可以使用上面 ui 内部使用的意图:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
startActivityForResult(intent, 4711);
以结果代码开始该意图,并在您的 onActivityResult 中检查它,如下所示:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 4711) {
if(data != null) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if(uri != null) {
yourTextView.setText(uri);
}
}
}
}
【讨论】: