如何使用RingtoneManager.ACTION_RINGTONE_PICKER设置铃声?
我尝试在这里找到解决方案,但只有解决方案为自己的/选定的文件,而不是代码时,我打电话选择器。我用下面的代码,当用户按下按钮:如何使用RingtoneManager.ACTION_RINGTONE_PICKER设置铃声?
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
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);
ActivityCurrent.this.startActivityForResult(intent,999);
这个节目的铃声选择器,用户可以选择想要的铃声,但我错过两样东西: - 它doesn't显示当前的铃声,当它打开 - 它不点击时保存铃声OK
我仍然无法找到方法如何打开RINGTONE_PICKER与已选定的当前铃声。任何想法?
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
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);
ActivityCurrent.this.startActivityForResult(intent,999);
您必须实施onActivityResult()
以接收用户选择的结果,然后保存它。
if (resultCode == RESULT_OK) {
Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null) {
String ringTonePath = uri.toString();
}
下面的例子:http://www.ceveni.com/2009/07/ringtone-picker-in-android-with-intent.html
编辑:更新
RingtoneManager.setActualDefaultRingtoneUri(
myActivity,
RingtoneManager.TYPE_RINGTONE,
uri);
则必须调用此:)
Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtone);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtone);
startActivityForResult(intent , 1);
“铃声” 是在我保存的URI在onActivityResult()
挑选的语气。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case 1:
ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
// Toast.makeText(getBaseContext(),RingtoneManager.URI_COLUMN_INDEX,
// Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
希望它可以帮助你。如果是的话,击中答案。
它的工作原理!你节省了我的时间..谢谢 –
谢谢你它的工作 但是,如果我们在RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI添加我们的原始文件uri,重新打开铃声后没有选择默认声音的时间选择选择器 –
能否请你告诉我 –
该代码是完美的,适合我。但你忘了提及所需的权限..在这里。试试这个code..hope它有助于
<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>
根植设备上,你只需要'android.permission.WRITE_SETTINGS'权限,不过不知道关于非root的设备, – ChuongPham
哦,我不知道那个!! Thx的信息..我的根本是没有根据的。所以我不得不让所有这三个工作 –
该代码将显示哪些用户在使用的铃声选择器前面设置默认铃声。
在铃声意图的按钮中使用以下代码。
public void pickRingtone(View view) {
// TODO Auto-generated method. stub
Intent intent = new. Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone");
// for existing ringtone
Uri urie = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie);
startActivityForResult(intent, 5);
}
谢谢,但这只是如何赶路。但我没有看到: - 如何保存这些设置? - 如何在打开时显示当前铃声? – Michalsx
只是更新源,我以为你已经知道了:) –
亲爱的Xjaphx:)非常感谢你,你救了我:)这段代码正在按我的需要工作。 – Michalsx