锁屏通知的显示管理是在Settings中通过Settings provider的数据库字段管控的,SystemUI在
com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl.java中通过动态监听数据库字段进行关联,相关代码如下:
mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS), false, mLockscreenSettingsObserver, UserHandle.USER_ALL);//监听是否在锁屏上显示通知 mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS), true, mLockscreenSettingsObserver, UserHandle.USER_ALL);//监听是否在锁屏上显示通知相关内容
分以下3中情况:
LOCK_SCREEN_SHOW_NOTIFICATIONS=0锁屏不显示通知
LOCK_SCREEN_SHOW_NOTIFICATIONS=1&&LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS=1 锁屏显示通知同时也显示通知内容
LOCK_SCREEN_SHOW_NOTIFICATIONS=1&&LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS=0 锁屏显示通知但不显示通知内容
锁屏上显示通知不显示通知内容通过
userAllowsPrivateNotificationsInPublic方法判断是ExpandableNotificationRow加载mPrivateLayout还是mPublicLayout实现的