安卓O+:某些手机似乎缺少更改通知声音类型选项的功能。

4
关于 Android O+ 的通知声音问题。 有一些手机的“通知设置”窗口中,没有显示声音选择按钮(甚至没有震动按钮)。 以下是一些示例:
- 三星 A5 - 华为荣耀 V10
(它们可不是小品牌……)
它们在 Android 8 上使用 Gmail 应用进行测试(菜单 -> 设置 -> 帐户 -> 通知设置)。
这里提供了一个解决方案以避免“标准”窗口:Android O - Notification Channels - Change Vibration Pattern or Sound Type,但我们为什么要重复发明轮子呢?
我是否忽略了其他选项?
谢谢,
Max

P.S. 这是一张来自Honor 9/Android 8.0.0的截图。频道名称为“Mail”(意大利语中为“Posta”)。对于声音(意大利语中为“Suoneria”),只有一个开关按钮。GMail -> 设置 -> 账户 -> 通知设置


没有人回复:我是不是忽略了什么?我有几个用户抱怨,所以这应该是一个普遍的经验...谢谢 - mdicosimo
你能够在这些设备中的一个上面包含一张截图吗?默认情况下,用户还需要点击通知渠道本身才能更改高级设置,例如通知声音。 - ianhanniballake
我添加了一张来自华为荣耀9的截图,显示了这个“问题”。这与我从三星和另一个华为型号收到的截图完全相同。谢谢。 - mdicosimo
@mdicosimo,你有解决这个问题的方案吗? - Sagar
不,我没有。你遇到了同样的问题吗? 我担心我是唯一一个谈论这个问题的人:也许我忽略了一些明显的解决方法... - mdicosimo
1个回答

0

这真是一团糟。你需要为不同品牌/设备添加解决方法。这是我们用来处理它的流程:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isDeviceWithWorkaround()) {
    // Send to notification channel settings (See https://developer.android.com/training/notify-user/channels#UpdateChannel)
}else{
    Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Sound");
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(someExistingRingTone));
    if (isDeviceWithWorkaround()) {
        intent.setPackage("com.android.providers.media"); 
    }
    try {
        startActivityForResult(intent, reqCode);
    } catch (ActivityNotFoundException e) {
        if (isDeviceWithWorkaround()) {
            Log.i(TAG, "Failed to find preferred package [" + intent.getPackage() + "]. Trying again without package.");
            intent.setPackage(null);
            startActivity(intent);
        }
    }
}

所发生的情况是,如果它是一个已知问题的设备,我们会将它们发送到经典的铃声选择器。

我相信包com.android.providers.media在原生Android上没有要启动的活动,但在华为上,它会打开媒体商店,我们会得到一个可以用作通知声音的铃声URI。(我们不希望用户进入可能无法工作的其他铃声选择器。我们一直建议我们的用户使用https://play.google.com/store/apps/details?id=com.angryredplanet.android.rings_extended,但它在Android 8上的华为上无法使用)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接