ContentResolver.insert возвращает значение null

Иногда у меня возникают проблемы с установкой звуков в качестве мелодий звонка/уведомлений внутри действия:

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, source);
values.put(MediaStore.MediaColumns.TITLE, "abc");
values.put(MediaStore.MediaColumns.SIZE, new File(source).length());
values.put(MediaStore.MediaColumns.MIME_TYPE, mime);
values.put(MediaStore.Audio.Media.ARTIST, "xyz");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);

final Uri curi = MediaStore.Audio.Media.getContentUriForPath(source);
Uri uri = getContentResolver().insert(curi, values);

в большинстве случаев uri имеет вид «content://media/external/audio/media/23», но иногда он равен нулю. Я не знаю, в чем проблема, аудиофайлы в порядке (воспроизводятся нормально), и, очевидно, метод вставки не вызывает никаких исключений. Я просмотрел документацию, но ничего не говорится о методе, возвращающем значение null. В чем может быть проблема?


person Froghut    schedule 03.12.2010    source источник


Ответы (2)


Поставщики содержимого пока не поддерживают удаленные исключения. Я бы посмотрел в logcat, когда вы получите нулевой Uri. Я подозреваю, что медиа-провайдер выдаст какое-то исключение.

person Nic Strong    schedule 04.12.2010

23 ,24 должны быть громкостью вверх и вниз для мультимедиа. uri должен быть одинаковым.

person garima    schedule 03.12.2010
comment
У меня сложилось впечатление, что функция вставки возвращает уникальный uri для каждой добавляемой вами мелодии звонка? - person Froghut; 03.12.2010