gpt4 book ai didi

java - Android 通知 channel 设置 - 不列出应用程序提供的声音

转载 作者:行者123 更新时间:2023-11-29 23:41:21 35 4
gpt4 key购买 nike

整天都在研究这个问题,找不到答案。

在 Android Oreo 之前,我们的应用允许用户通过 webview(我们自己的 UI)通过 html 页面更改通知的音调。我们将显示来自 android 系统 (ringtone mgr) 的铃声,并获取应用程序原始文件夹中列出的任何内容。

在新的android Oreo 中,我们无法轻易更改通知的铃声,我们必须使用 channel 。所以我只是将我们的 UI 更改为..

if(OS.version < Android Oreo) ---> continue to use the same UI and set tone.

if(OS.version >= Android Oreo) ---> create intent and startActivity for result - intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");

我以为一切都很好,但意识到我最初在应用程序启动时设置的应用程序提供的声音不在声音列表中。因此,如果用户转到 channel 设置,并将声音从“应用程序提供的声音”更改为其他任何声音,则用户无法在不重新安装的情况下恢复“应用程序提供的声音”。

有一个默认通知声音的选项,但是,它不是我们的默认声音。 (也许这是android默认的通知声音。。。)默认的通知声音应该是app提供的声音。

我确实发现有一个文件夹可以放一些通知声音。Android\media\com.google.android.talk\Notifications 并且它会显示在该声音列表中,但是,它在所有手机上的位置可能不同,而且用户可能不知道哪个声音是实际的默认声音。

有什么想法吗?我是否需要传递一些额外的东西来使默认声音成为应用程序提供的声音?我需要在 list 中添加一些东西吗?

最佳答案

终于解决了我自己的问题。我实现的修复是采用原始声音并将它们添加到铃声管理器中。之后,当要更改 channel 声音时,它会预填充到“应用程序提供的声音”。

默认通知声音实际上是系统默认的通知声音,这是您不想为任何人更改的。 :)

以下 URL 帮助我找到了解决方案。

The method setActualDefaultRingtoneUri(Context, int, Uri) in the type RingtoneManager is not applicable for the arguments OnItemClickListener

http://programondaspot.blogspot.com/2015/09/set-raw-resource-file-as-ringtone-in.html

关于java - Android 通知 channel 设置 - 不列出应用程序提供的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51832085/

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