如何使用应用程序专用文件夹中的文件设置通知声音?

阴影

我在应用程序文件夹中有一个mp3文件。我可以通过进行访问getFilesDir().getAbsolutePath(),但是我无法成功地将其用作通知的播放声音。

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

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

毛克

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

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,您必须声明哪些文件可用。如文档所述:

FileProvider只能为您预先指定的目录中的文件生成内容URI。要指定目录,请使用元素的子元素以XML格式指定其存储区域和路径。

例如:

<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)

还有其他可能的基本路径。有关完整列表,请查看有关如何定义提供者可用文件的文档

意见:如您在评论中所述,要播放的音频文件不应包含特殊字符,下划线或任何其他受限字符。命名文件就像命名/res资源文件一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用子文件夹中的ico文件设置WPF应用程序图标

如何播放应用程序文件夹中的声音?

如何显示保存在Asp.Net Core应用程序专用文件夹中的图像?

如何使用“文件”应用程序(Nautilus)将文件拖放到文件夹中?

如何使用应用程序脚本在子文件夹内的子文件夹中搜索文件?

Django设置:如何从应用程序的settings文件夹中访问变量

如何更改 VSCode 中的设置和应用程序文件夹

如何设置图像驻留在应用程序文件夹中的Image Control的源

在 CodeIgniter 中,如何使用 site_url 访问应用程序文件夹之外的文件夹

如何设置应用程序/缓存和应用程序/日志文件夹的权限?

应用扩展程序如何访问包含应用程序文档/文件夹中的文件

如何使用VB从Windows窗体应用程序在Outlook中创建文件夹

如何设置app.yaml以使用重定向所有URL。将它们保存在Rails应用程序的公用文件夹中的文件中?

如何在GNOME应用程序菜单中创建应用程序文件夹?

使用Powershell在不是应用程序的文件夹中创建Web应用程序

打开应用程序文件夹中的文件

如何在SwiftUI中位于Apple的Files应用程序的文件夹中写入文件?

Azure:如何使用Azure逻辑应用程序编写从时间序列分区文件夹中获取文件的路径

从应用程序安装文件夹的子文件夹中读取文件

如何获取当前用户的我的应用程序设置文件夹路径?

如何在React应用程序中从公用文件夹导入文件?

如何从SpringBoot应用程序的资源文件夹中读取所有文件?

应用程序如何在 Documents 文件夹中写入和读取文件?

如何将下载的文件保存在应用程序内存的缓存文件夹中?

如何在Codeigniter应用程序的文件夹中访问CSS文件?

如何将应用程序生成的文件存储在Android的“下载”文件夹中?

Rails 5:如何在应用程序模板脚本中添加文件夹和文件

如何在UWP应用程序的AppX中包含文件夹和文件?

如何在Swift中将文件写入位于Apple的Files应用程序的文件夹中