gpt4 book ai didi

android - 如何使用应用程序私有(private)文件夹中的文件设置通知声音?

转载 作者:行者123 更新时间:2023-11-29 23:57:13 25 4
gpt4 key购买 nike

我在应用程序文件夹中有一个 mp3 文件。我可以通过 getFilesDir().getAbsolutePath() 访问它,但我没有成功使用作为通知播放的声音。

我的目标是允许用户下载自定义铃声,我不想覆盖默认的应用声音,因此铃声存储在上述文件目录中。

如何获取用作通知声音的文件的正确路径?

最佳答案

您需要使用 FileProvider 将文件 URI 传递给您的通知.例如:

val file = File(fileAbsolutePath)
FileProvider.getUriForFile(context, authority, file)

此外,您必须在 AndroidManifest.xml 上声明提供商,如下例所示:

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="your authority here"
android:exported="false"
android:grantUriPermissions="true">

<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>

</provider>

至于file_paths ,您必须声明哪些文件可用。如文档所述:

A FileProvider can only generate a content URI for files in directories that you specify beforehand. To specify a directory, specify the its storage area and path in XML, using child elements of the element.

例如:

<files-path name="my_audios" path="audios/" />

标签名称将定义您从中读取文件的基本文件夹。

  • <files-path ... />将映射到 files/这与您从 Context.getFilesDir() 获得的路径相同.
  • <cache-path ... />将指向您的应用程序的缓存子目录,该目录与 getCacheDir() 的路径相同.
  • <external-path ... />指向外部存储媒体的根目录。与 Environment.getExternalStorageDirectory() 相同.
  • <external-files-path ... />通向应用程序外部存储区域的根目录。与以下路径相同:Context#getExternalFilesDir(String) .

还有其他可能的基本路径。有关完整列表,请查看有关如何 define the provider available files 的文档.

观察:正如您在评论中所述,您要播放的音频文件不应包含特殊字符、下划线或任何其他受限字符。将文件命名为 /res资源文件。

关于android - 如何使用应用程序私有(private)文件夹中的文件设置通知声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50235304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com