如何让用户恢复到应用自定义声音?

Jer*_*101 5 audio android android-notifications android-8.0-oreo

Android O 应用可以使用应用声音资源在 NotificationChannel 上设置自定义声音:

NotificationChannel channel = new NotificationChannel(channelId, name, importance);
Uri uri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.customSound);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
    .setUsage(AudioAttributes.USAGE_ALARM)
    .build();
channel.setSound(uri, audioAttributes);
Run Code Online (Sandbox Code Playgroud)

现在在系统设置中,用户可以重新配置 NotificationChannel,从系统的声音资源中选择不同的声音。

问题:该声音列表不包括应用程序自己的声音资源,因此用户在更改后永远无法恢复到应用程序的自定义声音资源。

Q. APP如何让用户恢复APP的自定义声音资源?应用程序是否必须将声音文件复制到共享目录(并使其工作)?

gre*_*f82 1

频道是一次性的,创建后应用程序无法修改它们。因此,您可以删除该通道并重新创建它,也可以将您的声音资源文件复制到公共目录中,以便用户在调整通道设置时选择它。

  • 要将自定义声音放入选择列表中,“复制到公共目录”是可行的。哪里有关于使其发挥作用的信息?哪个目录?访问权限?如果被删除了怎么办?如何判断新版本是否需要替换?如何在应用程序卸载时清理它?有更简单的方法吗? (3认同)
  • 我已经测试了删除和重新创建技巧,但所有不可修改的属性(声音、灯光、振动等)都将从删除的属性中**恢复**。您唯一可以更改的是它的名称。所以基本上没有办法用**相同的**频道ID来改变它们。事实上,该应用程序在 Oreo 和较新版本的 Android 中被限制访问,这令人遗憾。 (2认同)
  • 有人可以发布一个解决方案,将自定义声音复制到“通知”文件夹中,以便为用户显示自定义声音吗? (2认同)