MIUI通知权限说明

1.业务逻辑:

通知相关权限包括:允许通知,显示桌面应用角标,悬浮通知,锁屏通知,允许发声,允许振动,允许呼吸灯闪烁。

其中“允许通知”权限是原生接口,默认打开,其余权限均由MIUI实现,默认只有“允许振动”权限打开。

这里要解释下“悬浮通知”和“锁屏通知”权限,并不是打开这两个权限开关后,应用发的通知就会悬浮/在锁屏显示,而是应用发的通知具备了悬浮/在锁屏显示的能力,至于通知最终能否悬浮/在锁屏显示,还需要判定其他的条件。

2.常见问题

Q:如何判断应用/Channel的“允许通知”权限是否打开?

public boolean isNotificationChannelEnabled(Context context, @Nullable String channelId) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        if (!TextUtils.isEmpty(channelId)) {
            NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationChannel channel = manager.getNotificationChannel(channelId);
            return channel.getImportance() != NotificationManager.IMPORTANCE_NONE;
        }
        return false;
    } else {
        return NotificationManagerCompat.from(context).areNotificationsEnabled();
    }
}

Q:打开“悬浮通知”权限,应用发的通知没有悬浮显示。
A:打开“悬浮通知”权限,仅代表应用拥有了悬浮显示通知的能力,但通知最终能否悬浮显示,还需要判定其他的条件:通知的重要程度为 IMPORTANCE_HIGH,当前手机处于非勿扰状态,等等。

Q:打开“锁屏通知”权限,应用发的通知没有在锁屏显示。
A:打开“锁屏通知”权限,仅代表应用拥有了在锁屏显示通知的能力,但通知最终能否在锁屏显示,还需要判定其他的条件:通知的重要程度不为 IMPORTANCE_MIN,当前手机没有解锁过,等等。
此外,媒体通知(MediaStyle)会在始终锁屏上显示。

Q:打开应用的“悬浮/锁屏通知”权限,如何让应用的通知不悬浮/在锁屏显示。
A:在 Notification 中提供了两个 extra:

notification.extras.putBoolean("miui.enableFloat", false);  // 通知不悬浮显示
notification.extras.putBoolean("miui.enableKeyguard", false);  // 通知不在锁屏上显示

Q:打开“允许发声/振动/呼吸灯”权限,通知没有发声/振动/呼吸灯闪烁。
A:同样,打开相应开关仅代表应用具备了相应的能力,最终效果需要查看通知Channel设置。

Q:如何申请相应权限白名单?
A:目前白名单申请仅对内部业务开放。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。