我想开发一个消息传递应用程序。在此消息传递应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户选择短信铃声时,短信铃声的名称将在文本视图中设置,铃声将被设置为默认的短信铃声。我怎样才能做到这一点 ?
答案 0 :(得分:3)
无论你做什么。这段代码肯定会做你想要的东西!!
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);
使用它对你来说很方便
答案 1 :(得分:0)
我会为用户提供首选项屏幕。 Rintones有一个特殊条目:<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);
}
}
}
}
答案 2 :(得分:0)
试试这个:
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRintoneUri);