Я использую следующий код, чтобы получить список звуков уведомлений доступны на устройстве Android:Как воспроизводить звук уведомления программно с помощью URI, не устанавливая его по умолчанию?
public static ArrayList<String> getNotificationSounds(Activity curActivity) {
RingtoneManager manager = new RingtoneManager(curActivity);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
ArrayList<String> list = new ArrayList<>();
while (cursor.moveToNext()) {
String id = cursor.getString(RingtoneManager.ID_COLUMN_INDEX);
String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
String name = cursor.getString((RingtoneManager.TITLE_COLUMN_INDEX));
list.add(name);
}
return list;
}
Теперь я хочу, чтобы играть одну из этих звуков уведомлений (нет изображения или название), только звукбез установка его по умолчанию.
Я видел много решений, которые предполагают установление звука по умолчанию, используя
RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_NOTIFICATION,soundClipUri);
с помощью этого URI, который я получаю от описанного выше метода
String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
Я получаю ошибку о том, что источник данных не действует.
Таким образом, чтобы подвести итог,
1) Как играть звук уведомления без установки его по умолчанию?
2) Как получить и использовать Uri этого звука уведомления?
EDIT: Когда я попытался напечатать URI от курсора запроса, упомянутого выше, я получаю тот же результат:
content://media/internal/audio/media
для всех звуков имеющихся уведомлений.
Предполагаем ли мы добавить звуковое название уведомления к этому и передать результат как Uri?
Код для воспроизведения уведомления:
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(),uri);
r.play();
«Я получаю сообщение об ошибке говорящее этот источник данных недействителен »- что такое' Uri'? Как вы его используете? – CommonsWare
Редактирование моего вопроса :) – SoulRayder
@CommonsWare: Посмотрите сейчас. – SoulRayder