Как установить рингтон с 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);
Этот рингтон для выбора показа, пользователь может выбрать мелодию для звонка, но я пропускаю две вещи:
- он не показывает текущую мелодию звонка при ее открытии
- он не сохраняет мелодию звонка, когда на нее нажимают 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);
Ответы
Ответ 1
Вы должны реализовать 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);
Вы должны называть это:)
Ответ 2
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;
}
}
}
Надеюсь, это поможет вам. Хит ответил, если это произойдет.
Ответ 3
Этот код будет показывать мелодию звонка по умолчанию, которую пользователь устанавливает раньше, когда используется рингтон.
Используйте код внизу кнопки для вызова мелодии звонка.
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);
}
Ответ 4
Код идеален и работает для меня. Но вы забыли упомянуть о необходимых разрешениях... где бы это ни было. попробуйте этот код. Надеюсь, он поможет
<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>