Android NotificationListenerService:阻止显示通知

时间:2017-05-26 08:44:39

标签: android notifications

我正在尝试制作一个高级的“请勿打扰”应用,所以我正在使用SDK中的NotificationListenerService。每当onNotificationPosted触发时,我都可以取消通知并将其从通知抽屉中删除。然而,手机仍然振动半秒钟,用户仍然知道通知,使整个应用程序不那么有用。

您是否知道如何解决此问题并有效防止手机振铃/振动?

提前致谢

1 个答案:

答案 0 :(得分:1)

要关闭通知声音,请按以下方式使用AudioManager

// Turn off sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 

// Turn on sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);

关闭振动更加棘手

API中不推荐使用

setVibrateSetting api。根据[android开发者网站](https://developer.android.com/reference/android/media/AudioManager.html#setVibrateSetting(int,int)),

  

应用程序应根据当前振铃模式维护自己的振动策略,可以通过getRingerMode()查询。

一个丑陋的解决方法是使用振铃模式使用RINGER_MODE_SILENT启用/禁用振动。 这会使整个手机静音(来电和通知)

AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

并在显示通知后几秒钟或onNotificationPosted事件结束时将其恢复到之前的状态。

来自herehere

的回答