今天遇到的问题是发现给Notifycation设置了Notification.DEFAULT_VIBRATE的flag后会在任何情况下都震动。按照API的说法应该是该Flag会随用户设定全局是否震动而震动。这有可能是因为我刷MIUI后的系统漏洞。
但是不管怎么说解决问题的方式如下:
stackOverflow上也有人遇到了相同的问题,需要在设置Notification.DEFAULT_VIBRATE之前人为的判断一下当前系统的震动情况:
notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND; // Modify by H3c Start:只有当震动模式开启的时候才会震动 AudioManager audiomanager = (AudioManager)TimeHutApplication.getInstance(). getSystemService(Context.AUDIO_SERVICE); switch (audiomanager.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: break; case AudioManager.RINGER_MODE_VIBRATE: case AudioManager.RINGER_MODE_NORMAL: notification.defaults |= Notification.DEFAULT_VIBRATE; break; // Modify by H3c end