gpt4 book ai didi

android - 在 Android 中检测请勿打扰模式更改时要听什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:41 29 4
gpt4 key购买 nike

我希望我的应用程序在手机设置为请勿打扰模式(仅警报、仅优先级或完全静音)时显示通知。在快速设置中检查此模式并在已选择的选项卡中选择模式时,通过收听 android.media.RINGER_MODE_CHANGED 效果很好。 But when selecting another tab it isn't fired again.所以我的应用程序有错误的模式信息并显示错误的通知。

我再次尝试 android.app.action.INTERRUPTION_FILTER_CHANGED 但在上述情况下它根本没有被触发。

因为我想立即得到通知,所以我不想使用轮询观察器。就我而言,我预计会因此消耗大量电池。

有一个类似的问题,但没有针对它的监听器解决方案:

Android: Detect Do Not Disturb status?

希望在此期间可能有解决方案,我想再次问这个问题:有没有人有好主意或提示要听什么?

更新:

这是 AndroidManifest.xml 中的广播接收器定义...要清楚这一点:接收器在响铃模式更改时被调用,飞行模式和摘机也会被检测到,但它不会在所有响铃模式下被调用更改,尤其是通过快速设置中的 Tab 键或音量键在请勿打扰模式之间切换更改:

    <receiver android:name="UpdateStatusNotification" android:process=":remote">
<intent-filter>
<action android:name="android.app.action.INTERRUPTION_FILTER_CHANGED"/>
<action android:name="android.intent.action.AIRPLANE_MODE"/>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.media.RINGER_MODE_CHANGED"/>
</intent-filter>
</receiver>

更新 2:

请阅读我对已接受答案的最后评论。

最佳答案

广播接收器 Action 是:

NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED

IntentFilter intent = new IntentFilter();
intent.addAction(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED);

下面的代码应该在接收器中。

if(intetn.getAction().equals(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED) {
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if(mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_ALARMS) {
//do your stuff
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_NONE) {
//....
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_ALL) {
//....
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_PRIORITY) {
//....
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_UNKNOWN) {
//....
}
}

关于android - 在 Android 中检测请勿打扰模式更改时要听什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37620889/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com