Android Notification与NotifiationChannel.enableVibration振动(false)

时间:2017-09-28 09:34:07

标签: android notifications android-8.0-oreo notification-channel

使用API​​ 26(Android 8.0),我们需要为每个通知定义NotificationChannel。每个频道都有自己的中断设置(例如振动,光线,声音)。

问题: 当我禁用此频道的振动并将其部署在Android 8.0(2017年9月安全更新)手机(Nexus 5X)上时,通知会触发振动并自动打开(弹出)我做了没有设置,想要禁用。

  1. 我在MainActivity中注册了NotificationChannel:

    // Register NotificationChannels needed for API 26+ to display notification messages
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel runningChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID_RUNNING,
                getString(R.string.notification_channel_name_running), NotificationManager.IMPORTANCE_LOW);
        runningChannel.enableLights(false);
        runningChannel.enableVibration(false);
        mNotificationManager.createNotificationChannel(runningChannel);
    }
    
  2. 我为通知设置了NotificationChannel:

    notification = new NotificationCompat.Builder(context)
                .setContentIntent(onClickPendingIntent)
                .setChannelId(NOTIFICATION_CHANNEL_ID_RUNNING)
                .setOngoing(true)
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(false)
                .build();
    
  3. 更新(2017年10月5日安全更新)

    现在一切都按预期工作,没有解决方法,所以我可以选择targetSDK 26(之前,我用25来避免这种错误行为)。对于其他版本与其他手机类似的错误尚未收到最新更新的情况,我将下面的解决方法标记为已接受的答案。

1 个答案:

答案 0 :(得分:3)

这似乎有效:

runningchannel.setVibrationPattern(new long[]{0, 0, 0, 0,0, 0, 0, 0, 0});

是的,这很奇怪