Add BatteryTipDialogFragment.

This DialogFragment handles all the tip related dialogs. This cl makes:
1. All the tips parcelable.
2. Add dialog for HighUsageTip. It also need adapter to populate app
list in dialog.
3. Add and update tests

Bug: 70570352
Test: RunSettingsRoboTests
Change-Id: Ie4c986172cfc73d8746abc7457d966c8600c6145
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index cd64799..ad95121 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -94,6 +94,7 @@
 import android.text.format.DateUtils;
 import android.text.style.TtsSpan;
 import android.util.ArraySet;
+import android.util.IconDrawableFactory;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
@@ -1382,4 +1383,18 @@
         }
         return new BitmapDrawable(null, bitmap);
     }
+
+    /**
+     * Get the {@link Drawable} that represents the app icon
+     */
+    public static Drawable getBadgedIcon(IconDrawableFactory iconDrawableFactory,
+            PackageManager packageManager, String packageName, int userId) {
+        try {
+            final ApplicationInfo appInfo = packageManager.getApplicationInfo(packageName,
+                    PackageManager.GET_META_DATA);
+            return iconDrawableFactory.getBadgedIcon(appInfo, userId);
+        } catch (PackageManager.NameNotFoundException e) {
+            return packageManager.getDefaultActivityIcon();
+        }
+    }
 }