2010-12-03 337 views
4

我从活动中设置的声音作为铃声/通知时有时有一个问题: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是一样的东西“的内容://媒体/外部/音频/媒体/ 23“,但有时它是空的。 我不知道问题出在哪里,音频文件没问题(它们可以正常播放),显然插入方法不会抛出任何异常。 我查看了文档,但没有任何关于返回null的方法。 可能是什么问题?

回答

5

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

0

23,24应该是媒体的音量大小。 uri应该是一样的。

+0

我有印象插入函数为您添加的每个不同的铃声返回一个独特的URI? – Froghut 2010-12-03 10:39:18