在 Android 上,创建频道时,有两个属性:setBypassDnd 和 setLockscreenVisibility,它们只能由系统修改(https://developer.android.com/reference/android/app/NotificationChannel)。我已经测试过使用这些值创建一个频道:
if (Build.VERSION.SDK_INT >= 26) {
//we give it a name, description and importance
CharSequence name = context.getString(R.string.channel_name);
String channelID = getNotificationChannelID(getSharedPreferences(context));
NotificationChannel channel = new NotificationChannel(channelID, name, importance);
channel.setBypassDnd(true);
channel.setLockscreenVisibility(VISIBILITY_SECRET);
// Register the channel with the system
NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
但是频道中的值是按默认设置的(bypassDnd=false 和 LockscreenVisibility=VISIBILITY_PUBLIC),我理解这是由“只能由系统修改”限制引起的。
我正在重新创建频道,因为这似乎是创建频道后更改振动/声音/LED 的唯一方法,但我想保留用户可能设置的所有属性。
我想在这一点上这是一个我无法克服的限制,但我很好奇是否有人找到了解决这个问题的方法,或者这就是它的样子。