整天都在研究这个问题,但仍然找不到答案。以前,在 Android Oreo 之前,我们的应用程序可以通过 WebView(我们自己的 UI)上的 HTML 页面允许用户更改通知铃声。我们会显示来自 Android 系统(铃声管理器)的音调,并获取位于应用程序 raw 文件夹中列出的任何内容。
在新的 Android Oreo 中,我们无法轻松更改通知的铃声,必须使用通道。因此,我简单地将我们的 UI 更改为:
如果 (OS.version < Android Oreo) ---> 继续使用相同的 UI 并设置提示音。
如果 (OS.version >= Android Oreo) ---> 创建 Intent 并 startActivityForResult - intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
我以为一切都好了,但是发现在启动应用程序时设置的提供的声音在声音列表中不存在。因此,如果用户转到通道设置并将声音从“提供的应用程序声音”更改为其他任何声音,则用户无法重新获得该“提供的应用程序声音”而不重新安装应用程序。
有一个默认通知声音选项,但这不是我们的默认声音。(也许这是Android的默认通知声音……)默认通知声音应该是提供的应用程序声音。
我确实发现了一个文件夹,可以放置一些通知声音。 Android\media\com.google.android.talk\Notifications,它会显示在那个声音列表中,但这可能不是所有手机上的相同位置,而且用户可能不知道哪个声音才是实际的默认声音。
有什么想法吗?我需要传递一些额外的信息,使默认声音成为提供的应用程序声音吗?我需要在清单中添加一些内容吗?
在新的 Android Oreo 中,我们无法轻松更改通知的铃声,必须使用通道。因此,我简单地将我们的 UI 更改为:
如果 (OS.version < Android Oreo) ---> 继续使用相同的 UI 并设置提示音。
如果 (OS.version >= Android Oreo) ---> 创建 Intent 并 startActivityForResult - intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
我以为一切都好了,但是发现在启动应用程序时设置的提供的声音在声音列表中不存在。因此,如果用户转到通道设置并将声音从“提供的应用程序声音”更改为其他任何声音,则用户无法重新获得该“提供的应用程序声音”而不重新安装应用程序。
有一个默认通知声音选项,但这不是我们的默认声音。(也许这是Android的默认通知声音……)默认通知声音应该是提供的应用程序声音。
我确实发现了一个文件夹,可以放置一些通知声音。 Android\media\com.google.android.talk\Notifications,它会显示在那个声音列表中,但这可能不是所有手机上的相同位置,而且用户可能不知道哪个声音才是实际的默认声音。
有什么想法吗?我需要传递一些额外的信息,使默认声音成为提供的应用程序声音吗?我需要在清单中添加一些内容吗?
RingtoneManager
上设置属性? - IgorGanapolsky