ContentResolver.insert返回null

时间:2010-12-03 09:35:55

标签: android ringtone android-contentresolver

在将活动内部的声音设置为铃声/通知时,我有时会遇到问题:

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。 我不知道问题出在哪里,音频文件还可以(它们播放正常)显然插入方法不会抛出任何异常。 我查看了文档,但没有关于返回null的方法。 可能是什么问题?

2 个答案:

答案 0 :(得分:5)

内容提供商尚不支持远程异常。当你得到返回的null Uri时,我会查看logcat。我怀疑媒体提供商会抛出某种例外。

答案 1 :(得分:0)

23,24应该是媒体的音量上下。 uri应该是一样的。