Android 在没有写入外部存储权限的情况下将声音设置为铃声?

Android 在没有写入外部存储权限的情况下将声音设置为铃声?,android,Android,据我所知,要将声音设置为铃声,应将其插入MediaStore。对于在MediaStore中写入,需要具有写入外部存储权限。但是有没有一种方法可以将声音(例如外部存储器中的MP3文件)设置为铃声而不需要写入外部存储器权限?您应该使用Android的铃声管理器。有一个名为[setActualDefaultRingtoneUri](,int,android.net.Uri)的方法: 公共静态void setActualDefaultRingtoneUri(上下文,int 类型,Uri ringtone

据我所知,要将声音设置为铃声,应将其插入MediaStore。对于在MediaStore中写入,需要具有写入外部存储权限。但是有没有一种方法可以将声音(例如外部存储器中的MP3文件)设置为铃声而不需要写入外部存储器权限?

您应该使用Android的
铃声管理器
。有一个名为[setActualDefaultRingtoneUri](,int,android.net.Uri)的方法:

公共静态void setActualDefaultRingtoneUri(上下文,int 类型,Uri ringtoneUri)

设置给定声音类型的默认声音的Uri

参数

  • 上下文:用于查询的上下文
  • 类型:应设置其默认声音的类型。
    TYPE\u铃声
    TYPE\u通知
    TYPE\u报警
  • ringtoneUri:指向要设置的默认声音的Uri

您可以使用
file.toURI()

获取文件的Uri,谢谢。它可以工作,但当我转到“声音设置->通知声音”时,我看到的不是我的声音被选中,而是“未知”,并且没有选择任何声音。@SergioViudes,同样的问题在这里,我看到了未知的命名声音,甚至声音文件在铃声列表中也不存在,你对此做了什么,请分享。目前为止有什么解决方案吗?