Android NotificationListenerService : prevent notification from being displayed

标签 android notifications

我正在尝试制作一个高级的“请勿打扰”应用程序,因此我正在使用 SDK 中的 NotificationListenerService。每当 onNotificationPosted 触发时,我都可以取消通知并将其从通知抽屉中删除。但是,手机仍会振动半秒钟,用户仍会注意到通知,从而使整个应用的用处降低。

你知道如何解决这个问题并有效地防止手机响铃/振动吗?

提前致谢

最佳答案

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

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

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

关闭振动比较棘手

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

Applications should maintain their own vibrate policy based on current ringer mode that can be queried via getRingerMode().

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

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

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


来自 here 的回答和 here

关于Android NotificationListenerService : prevent notification from being displayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197274/

相关文章:

javascript - React Native 使用什么来允许 JavaScript 在 iOS 和 Android 上本地执行?

Android:TargetFrameworkVersion 大于我的项目

android - 无法在android studio中构建apk

sql-server-2008 - 当 SQL Server 中的查询完成运行时发出警报

iphone - 在iOS通知中心显示音频流标题

iOS 通知。使用哪一个?

ios - 在本地通知上发送带有自定义声音的触觉

ios - 如何在 RPGLE 中构建 APNS 通知?

java - 在Android中保存单例状态?

java - 当我的 Activity 处于横向模式时,如何以纵向模式打开 NavigationDrawer?