diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml
index 982a65f..bfeb1b1 100644
--- a/InCallUI/res/values-am/strings.xml
+++ b/InCallUI/res/values-am/strings.xml
@@ -72,7 +72,7 @@
     <string name="notification_action_answer_video" msgid="7809271910870211729">"ቪዲዮ"</string>
     <string name="notification_action_answer_voice" msgid="1770796916369437773">"ድምፅ"</string>
     <string name="notification_action_accept" msgid="2898609801209468429">"ተቀበል"</string>
-    <string name="notification_action_dismiss" msgid="2679969397930852858">"ያጥፉ"</string>
+    <string name="notification_action_dismiss" msgid="2679969397930852858">"አሰናብት"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"መልሰህ ደውል"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"መልዕክት"</string>
     <string name="incall_error_power_off" msgid="6550191216405193368">"ለመደወል፣ መጀመሪያየአውሮፕላኑን ሁነታ አጥፋ።"</string>
diff --git a/InCallUI/src/com/android/incallui/CircularRevealActivity.java b/InCallUI/src/com/android/incallui/CircularRevealActivity.java
index 7a9b7cc..4dc58ba 100644
--- a/InCallUI/src/com/android/incallui/CircularRevealActivity.java
+++ b/InCallUI/src/com/android/incallui/CircularRevealActivity.java
@@ -59,9 +59,7 @@
         super.onCreate(savedInstanceState);
         overridePendingTransition(0, 0);
         setContentView(R.layout.outgoing_call_animation);
-        final Point touchPoint = getIntent().getParcelableExtra(TouchPointManager.TOUCH_POINT);
-        final MaterialPalette palette = getIntent().getParcelableExtra(EXTRA_THEME_COLORS);
-        setupDecorView(touchPoint, palette);
+        prepareDecorViewFromIntent(getIntent());
     }
 
     @Override
@@ -81,6 +79,18 @@
         super.onStop();
     }
 
+    @Override
+    protected void onNewIntent(Intent intent) {
+        setIntent(intent);
+        prepareDecorViewFromIntent(intent);
+    }
+
+    private void prepareDecorViewFromIntent(Intent intent) {
+        final Point touchPoint = intent.getParcelableExtra(TouchPointManager.TOUCH_POINT);
+        final MaterialPalette palette = intent.getParcelableExtra(EXTRA_THEME_COLORS);
+        setupDecorView(touchPoint, palette);
+    }
+
     private void setupDecorView(final Point touchPoint, MaterialPalette palette) {
         final View view  = getWindow().getDecorView();
 
