如何在 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);
方便使用
我想开发一个消息传递应用程序。在此消息传递应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户 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);
方便使用