Android setBypassDnd和setLockscreenVisibility仅可由系统修改

Android setBypassDnd和setLockscreenVisibility仅可由系统修改,android,notification-channel,Android,Notification Channel,在Android上,创建频道时,有两个属性:setBypassDnd和setLockscreenVisibility,它们只能由系统修改()。 我已经测试过使用以下值创建通道: if (Build.VERSION.SDK_INT >= 26) { //we give it a name, description and importance CharSequence name = context.getString(R.string.channel

在Android上,创建频道时,有两个属性:setBypassDnd和setLockscreenVisibility,它们只能由系统修改()。 我已经测试过使用以下值创建通道:

    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\u PUBLIC),我理解这是由“仅可由系统修改”限制引起的

我正在重新创建频道,因为这似乎是创建频道后更改振动/声音/LED的唯一方法,但我希望保留用户可能设置的所有属性


我想在这一点上这是一个我无法克服的限制,但我很好奇,是否有人找到了解决这个问题的方法,或者这就是它的本来面目。

对我来说也是如此。你找到解决办法了吗?恐怕这是个限制。这里的教训是不要重新创建频道并让用户进行任何更改。如果该选项对您非常重要,您可以随时将用户带到通知设置,以便他们进行更改,但仅此而已。当然可以,但问题是某些设置不能由用户在系统设置中更改。例如:振动模式只能通过代码添加,但不能通过系统设置更改。在一些手机制造商的系统设置中,没有办法改变这一点。我也一样。你找到解决办法了吗?恐怕这是个限制。这里的教训是不要重新创建频道并让用户进行任何更改。如果该选项对您非常重要,您可以随时将用户带到通知设置,以便他们进行更改,但仅此而已。当然可以,但问题是某些设置不能由用户在系统设置中更改。例如:振动模式只能通过代码添加,但不能通过系统设置更改。在一些手机制造商的系统设置中,没有办法改变这一点。