在网上找了很多关于铃声设置的,不晓得怎么回事就是没测试通过,后来换了另外一种方式解决了。回过头来看了一下原理是一样的,于是就把两者合并到了一起。原理:首先根据传进来的绝对路径来查询传进来路径的歌曲是否存在,如果存在则得到id和uri,通过ContentUris.withAppendedId(uri,id),将uri和id拼接成一个新的Uri,然后将新的uri设置成想要的铃声即可。
最主要的代码:RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
第一个参数表示上下文、第二个参数表示设置的铃声状态,第三个表示当前的歌曲uri。
如果传进来的歌曲路径不存在,则直接调用系统的插入数据方法,得到一个返回的uri,这里得到的uri是不带id参数的,不晓得为什么,这样设置铃声是不成功的。我想到的笨方法是,在插入数据之后应该立即发送广播让系统扫描媒体数据,然后来查询得到新的uri,然后再来设置。不晓得哪位大牛有什么好的方法能够借鉴一下。
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
这是之前在网上搜索的普遍方法,按照这个方法得到的uri是不带id参数的。只是将传入的文件添加到系统的媒体数据库中。
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
另外一种方法是调用系统的设置铃声的方法。如果不加自定义铃声的方法则调用的是系统默认的铃声设置。若添加了上面自定义铃声的代码则会将传进来的铃声
添加到铃声设置列表中供你选择。
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
最后需要添加修改系统设置的权限: