如何在 android 中获取短信铃声

how to get sms ringtone in android

我想开发一个消息传递应用程序。在此消息传递应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户 select 短信铃声时,短信铃声的名称将在文本视图中设置,铃声将设置为默认短信铃声。我怎样才能做到这一点 ?

我会为用户提供一个首选项屏幕。铃声有一个特殊条目:<RingtonePreference />

<PreferenceScreen>
    <RingtonePreference
         android:title="Current Ringtone"
         android:key="ring" />
</PreferenceScreen>

使用 属性 后,铃声将使用密钥 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);
            }
        }
    }
}

试试这个:

Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRintoneUri);

随心所欲。这段代码一定会做你想做的事!!

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不是铃声的名字

Ringtone ringtone = RingtoneManager.getRingtone(this, uri); 
String title = ringtone.getTitle(this);

方便使用