diff --git a/src/com/android/packageinstaller/UninstallerActivity.java b/src/com/android/packageinstaller/UninstallerActivity.java
index dbd7ac3..142e95e 100755
--- a/src/com/android/packageinstaller/UninstallerActivity.java
+++ b/src/com/android/packageinstaller/UninstallerActivity.java
@@ -229,7 +229,7 @@
 
     public void startUninstallProgress() {
         boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
-        CharSequence label = mDialogInfo.appInfo.loadLabel(getPackageManager());
+        CharSequence label = mDialogInfo.appInfo.loadSafeLabel(getPackageManager());
 
         if (isTv()) {
             Intent newIntent = new Intent(Intent.ACTION_VIEW);
diff --git a/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java b/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java
index 417b75a..b50960e 100644
--- a/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java
+++ b/src/com/android/packageinstaller/handheld/UninstallAlertDialogFragment.java
@@ -37,15 +37,14 @@
         final PackageManager pm = getActivity().getPackageManager();
         final UninstallerActivity.DialogInfo dialogInfo =
                 ((UninstallerActivity) getActivity()).getDialogInfo();
-        final CharSequence appLabel = dialogInfo.appInfo.loadLabel(pm);
-
+        final CharSequence appLabel = dialogInfo.appInfo.loadSafeLabel(pm);
         AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
         StringBuilder messageBuilder = new StringBuilder();
 
         // If the Activity label differs from the App label, then make sure the user
         // knows the Activity belongs to the App being uninstalled.
         if (dialogInfo.activityInfo != null) {
-            final CharSequence activityLabel = dialogInfo.activityInfo.loadLabel(pm);
+            final CharSequence activityLabel = dialogInfo.activityInfo.loadSafeLabel(pm);
             if (!activityLabel.equals(appLabel)) {
                 messageBuilder.append(
                         getString(R.string.uninstall_activity_text, activityLabel));
diff --git a/src/com/android/packageinstaller/television/UninstallAlertFragment.java b/src/com/android/packageinstaller/television/UninstallAlertFragment.java
index c128174..138a5c3 100644
--- a/src/com/android/packageinstaller/television/UninstallAlertFragment.java
+++ b/src/com/android/packageinstaller/television/UninstallAlertFragment.java
@@ -42,14 +42,14 @@
         final PackageManager pm = getActivity().getPackageManager();
         final UninstallerActivity.DialogInfo dialogInfo =
                 ((UninstallerActivity) getActivity()).getDialogInfo();
-        final CharSequence appLabel = dialogInfo.appInfo.loadLabel(pm);
+        final CharSequence appLabel = dialogInfo.appInfo.loadSafeLabel(pm);
 
         StringBuilder messageBuilder = new StringBuilder();
 
         // If the Activity label differs from the App label, then make sure the user
         // knows the Activity belongs to the App being uninstalled.
         if (dialogInfo.activityInfo != null) {
-            final CharSequence activityLabel = dialogInfo.activityInfo.loadLabel(pm);
+            final CharSequence activityLabel = dialogInfo.activityInfo.loadSafeLabel(pm);
             if (!activityLabel.equals(appLabel)) {
                 messageBuilder.append(
                         getString(R.string.uninstall_activity_text, activityLabel));
