首页 > 技术文章 > L版本全屏显示来电界面

2020521y 2017-09-25 17:17 原文

描述 

L版本中, 来电直接显示来电界面, 而不是 show Notification(HeadsUp view)

解决:

HeadsUp 是 google 在 L 版本上面 PhoneStatusBar 中新增的功能.
而在未锁屏时来电就是通过这种方式来显示的. 从而替代了全屏显示来电界面的方式.
如果还是倾向于全屏显示来电界面. 则可以通过如下方式来单独关闭通话的 HeadsUp 功能.

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBar.java

 

/// M: turn off HeadsUp for dialer. @{ 
private final String PACKAGES_DIALER = "com.android.dialer";
/// @}
@Override
public void addNotification(StatusBarNotification notification, RankingMap ranking) {
/// M: turn off HeadsUp for dialer. @{ 
boolean belongsToDialer = PACKAGES_DIALER.equals(notification.getPackageName());
if (DEBUG) {
Log.d(TAG, "addNotification key=" + notification.getKey() +
", package=" + notification.getPackageName());
}
if (!belongsToDialer &&
/// @}
mUseHeadsUp && shouldInterrupt(notification)) {
if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
Entry interruptionCandidate = new Entry(notification, null);
ViewGroup holder = mHeadsUpNotificationView.getHolder();
if (inflateViewsForHeadsUp(interruptionCandidate, holder)) {
// 1. Populate mHeadsUpNotificationView
mHeadsUpNotificationView.showNotification(interruptionCandidate);
// do not show the notification in the shade, yet.
return;
}
}
.................................;
}
@Override
public void addNotification(StatusBarNotification notification, RankingMap ranking) {
/// M: turn off HeadsUp for dialer. @{ 
boolean belongsToDialer = PACKAGES_DIALER.equals(notification.getPackageName());
if (DEBUG) {
Log.d(TAG, "addNotification key=" + notification.getKey() +
", package=" + notification.getPackageName());
}
if (!belongsToDialer &&
/// @}
mUseHeadsUp && shouldInterrupt(notification)) {
if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
Entry interruptionCandidate = new Entry(notification, null);
ViewGroup holder = mHeadsUpNotificationView.getHolder();
if (inflateViewsForHeadsUp(interruptionCandidate, holder)) {
// 1. Populate mHeadsUpNotificationView
mHeadsUpNotificationView.showNotification(interruptionCandidate);
// do not show the notification in the shade, yet.
return;
}
}
.................................;
}

 

 

 

 

 

推荐阅读