android - 系统应用设置中的Android自定义通知声音
问题描述
我曾经使用自定义声音保存在res/raw
. 要求不允许其他应用程序使用此声音。
使用 Android 8 通知通道,我能够解决将用户从系统通知首选项重定向到应用首选项的方法,从那里我可以在其他 android 提供的声音中显示自定义声音。当用户更改通知声音时,会创建新的通知通道。
现在我进入了一个新的水平,我需要在应用程序处于后台时为 Firebase 云消息传递提供这种声音。
更新:我需要依赖高优先级消息和通知托盘处理程序,因此数据消息(可能)不是我的解决方案。
长话短说:我可以从系统应用程序设置中为我的应用程序(包括 Firebase 推送通知)提供自定义声音吗?
解决方案
首先,您需要发送有效负载通知,以便它们不会被 Android 本身自动显示。阅读这篇很棒的文章以获取更多信息。
设置自定义通知接收后,您只需对其应用声音即可。
为此,您需要res/raw/
像这样获取文件:
notification.sound = Uri.parse("android.resource://com.my.package/" + R.raw.notification_sound);
其中 com.my.package 需要替换为您的包名称。如果这对您不起作用,请尝试设置通知默认值:
notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE;
推荐阅读
- matlab - 如何生成(在 MATLAB 中)1:v 的 n 个子集的所有集合?
- maven - Maven - 不支持的驱动程序类型:CHROMEDRIVER.EXE
- java - Beam - 分支 PCollections 时出错
- javascript - 当我单击 Javascript 中的按钮时,如何使用存储在选择选项值中的 uri?
- r - R `+` 运算符如何知道根据类的不同表现?
- reactjs - 哪个是大型电子商务应用程序的最佳 React Native cli 或 React Expo
- flutter - Flutter:如何使用 cloud_firestore 从文档中获取集合?
- docker - Docker Centos7+haproxy1.8 80端口
- php - 节点使用 VIP 的 php-amqplib heatbeat 问题
- logging - JMeter 忽略 FATAL/OFF 日志级别