我正在制作一个应用程序,该应用程序从REST API下载.mp3文件并将其保存在系统铃声目录中,以便用户稍后将其选择为铃声。我在华为设备上有一个奇怪的问题。该文件保存在“铃声”目录中,但是在“铃声”列表的系统设置中不可见。为了使其可见,我必须手动转到“铃声”文件夹并更改文件名。之后,此铃声将在设置中正确可见。仅在华为设备上会出现此问题。使用File.renameTo()从代码更改文件名不起作用。我发现解决此问题的唯一方法是由用户手动更改。有谁知道这种行为的原因,最终我该如何使其正常工作?
这是我的代码的一部分,将代码从改造的responseBody保存到Ringtone目录中的文件中。
fun saveFileFromResponse(responseBody: ResponseBody) {
val readableByteChannel = Channels.newChannel(responseBody.byteStream())
val file = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES),
"audio.mp3"
)
val outStream = FileOutputStream(file)
outStream.channel.transferFrom(readableByteChannel, 0, Long.MAX_VALUE)
readableByteChannel.close()
outStream.close()
}