在我的程序中,我想通过它的文件路径保存选定的铃声,然后将其设置为当前的铃声 .
我从RingtonePreference获得了铃声uri,并从MediaStore数据库获取它的文件路径 .
例如
Uri - content://media/internal/audio/media/29
Path - /system/media/audio/notifications/Ascend.mp3
现在,如何从我保存的文件路径中获取铃声Uri?
由于铃声已存在于MediaStore中,我尝试了以下功能,但它无法正常工作 .
uriRingtone = MediaStore.Audio.Media.getContentUriForPath(szRingtonePath);
Uri与我从RingtonePreference得到的那个不一样 .
uriRingtone - content://media/internal/audio/media
如何查询MediaStore以获得我需要的Uri?
附:我没有直接存储铃声Uri的原因是我发现同一铃声的Uri有时会在某些设备中发生变化 .
4 回答
通过了解歌曲的 Headers ,您可以恢复存储在RingtonePreference中的铃声URI的方式(据我所知) . 然后你可以通过使用游标来获取存储的铃声_id来查询它,你可以用它构建一个URI:
其中finalSuccessful uri是uri指向RingtonePreference中的铃声 .
以下代码将返回音频,视频和图像的内容Uri的绝对路径 .
您还可以以更通用的方式对MediaStore中的任何内容执行此操作 . 我必须从URI获取路径并从路径获取URI . 前者:
后者(我为视频做的,但也可以通过将MediaStore.Audio(等)替换为MediaStore.Video来用于音频或文件或其他类型的存储内容:
基本上,
MediaStore
的DATA
列(或您查询的任何子部分)都存储文件路径,因此您可以使用该信息进行查找 .@ dong221:使用内部URI作为MediaStore.Audio.Media.INTERNAL_CONTENT_URI .