diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 25826f7..ebc177a 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -396,7 +396,7 @@
     private int mRequestedVideoState = VideoProfile.STATE_AUDIO_ONLY;
 
     private InCallVideoCallCallback mVideoCallCallback;
-    private boolean mIsVideoCallCallbackRegistered;
+    private VideoCall mRegisteredVideoCall;
     private String mChildNumber;
     private String mLastForwardedNumber;
     private String mCallSubject;
@@ -490,7 +490,7 @@
                 mVideoCallCallback = new InCallVideoCallCallback(this);
             }
             mTelecomCall.getVideoCall().registerCallback(mVideoCallCallback);
-            mIsVideoCallCallbackRegistered = true;
+            mRegisteredVideoCall = mTelecomCall.getVideoCall();
         }
 
         mChildCallIds.clear();
@@ -853,7 +853,7 @@
      *      callback on the {@link VideoCall}.
      */
     public VideoCall getVideoCall() {
-        return mTelecomCall == null || !mIsVideoCallCallbackRegistered ? null
+        return mTelecomCall == null || (mRegisteredVideoCall != mTelecomCall.getVideoCall()) ? null
                 : mTelecomCall.getVideoCall();
     }
 
diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
index 8f011e3..54bd571 100644
--- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
@@ -90,6 +90,7 @@
 
         InCallPresenter.getInstance().onServiceUnbind();
         tearDown();
+        StatusBarNotifier.clearAllCallNotifications(getApplicationContext());
 
         return false;
     }
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index ea39d03..c07ca2a 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -292,10 +292,13 @@
                 }
                 String combName = "";
                 for (String num : nums) {
-                    ContactInfo singleCi = lookupContactFromUri(getContactInfoLookupUri(num),
-                            isSip);
+                    ContactInfo singleCi = null;
+                    if (!TextUtils.isEmpty(num)) {
+                        singleCi = lookupContactFromUri(
+                                getContactInfoLookupUri(num), isSip);
+                    }
                     // If contact does not exist, need to avoid changing static empty-contact.
-                    if (singleCi == ContactInfo.EMPTY) {
+                    if (singleCi == null || singleCi == ContactInfo.EMPTY) {
                         singleCi = new ContactInfo();
                     }
                     if (TextUtils.isEmpty(singleCi.name)) {
