diff --git a/res/values/strings.xml b/res/values/strings.xml
index 78a30ca..7771ac0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8959,7 +8959,7 @@
     <string name="help_url_audio_accessory_not_supported" translatable="false"></string>
 
     <!-- Title label for new device suggestion, which is displayed in Settings homepage [CHAR LIMIT=100] -->
-    <string name="new_device_suggestion_title">What's new and exciting?</string>
+    <string name="new_device_suggestion_title">What\'s new and exciting?</string>
 
     <!-- Summary label for new device suggestion, which is displayed in Settings homepage [CHAR LIMIT=100] -->
     <string name="new_device_suggestion_summary">Check out the top 5 features</string>
diff --git a/src/com/android/settings/widget/EntityHeaderController.java b/src/com/android/settings/widget/EntityHeaderController.java
index c9e0805..8f64920 100644
--- a/src/com/android/settings/widget/EntityHeaderController.java
+++ b/src/com/android/settings/widget/EntityHeaderController.java
@@ -52,6 +52,10 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
+import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
+        .ACTION_OPEN_APP_NOTIFICATION_SETTING;
+import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_OPEN_APP_SETTING;
+
 public class EntityHeaderController {
 
     @IntDef({ActionType.ACTION_NONE,
@@ -310,6 +314,9 @@
                     button.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
+                            FeatureFactory.getFactory(mAppContext).getMetricsFeatureProvider()
+                                    .actionWithSource(mAppContext, mMetricsCategory,
+                                            ACTION_OPEN_APP_NOTIFICATION_SETTING);
                             mFragment.startActivity(mAppNotifPrefIntent);
                         }
                     });
@@ -327,6 +334,9 @@
                 button.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
+                        FeatureFactory.getFactory(mAppContext).getMetricsFeatureProvider()
+                                .actionWithSource(mAppContext, mMetricsCategory,
+                                        ACTION_OPEN_APP_SETTING);
                         mFragment.startActivity(intent);
                     }
                 });
diff --git a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
index 49d5e7d..4294dcf 100644
--- a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
@@ -32,11 +32,12 @@
 import android.view.View;
 import android.widget.TextView;
 
+import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -70,11 +71,12 @@
     private LayoutInflater mLayoutInflater;
     private PackageInfo mInfo;
     private EntityHeaderController mController;
+    private FakeFeatureFactory mFeatureFactory;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = FakeFeatureFactory.setupForTest(mContext);
         mShadowContext = RuntimeEnvironment.application;
         when(mActivity.getApplicationContext()).thenReturn(mShadowContext);
         when(mContext.getApplicationContext()).thenReturn(mContext);
@@ -154,6 +156,9 @@
         } catch (Exception e) {
             // Ignore exception because the launching intent is fake.
         }
+        verify(mFeatureFactory.metricsFeatureProvider).actionWithSource(mContext,
+                MetricsProto.MetricsEvent.VIEW_UNKNOWN,
+                MetricsProto.MetricsEvent.ACTION_OPEN_APP_SETTING);
         verify(mFragment).startActivity(any(Intent.class));
     }
 
