diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index b822a832634..071cbcb74fc 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -205,10 +205,14 @@ public class SettingsActivity extends SettingsBaseActivity } private String getMetricsTag() { - String tag = getClass().getName(); + String tag = null; if (getIntent() != null && getIntent().hasExtra(EXTRA_SHOW_FRAGMENT)) { tag = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT); } + if (TextUtils.isEmpty(tag)) { + Log.w(LOG_TAG, "MetricsTag is invalid " + tag); + tag = getClass().getName(); + } if (tag.startsWith("com.android.settings.")) { tag = tag.replace("com.android.settings.", ""); } diff --git a/tests/robotests/src/com/android/settings/SettingsActivityTest.java b/tests/robotests/src/com/android/settings/SettingsActivityTest.java index dd39f12cbba..7906803f3bd 100644 --- a/tests/robotests/src/com/android/settings/SettingsActivityTest.java +++ b/tests/robotests/src/com/android/settings/SettingsActivityTest.java @@ -16,6 +16,8 @@ package com.android.settings; +import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; @@ -34,6 +36,7 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.android.settings.core.OnActivityResultListener; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; @@ -82,6 +85,17 @@ public class SettingsActivityTest { verify(mTaskDescription).setIcon(anyInt()); } + @Test + public void getSharedPreferences_intentExtraIsNull_shouldNotCrash() { + final Intent intent = new Intent(); + intent.putExtra(EXTRA_SHOW_FRAGMENT, (String)null); + doReturn(intent).when(mActivity).getIntent(); + doReturn(mContext.getPackageName()).when(mActivity).getPackageName(); + FakeFeatureFactory.setupForTest(); + + mActivity.getSharedPreferences(mContext.getPackageName() + "_preferences", 0); + } + @Test public void onActivityResult_shouldDelegateToListener() { final List fragments = new ArrayList<>();