Loading res/xml/top_level_settings.xml +13 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ android:title="@string/network_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_network" android:order="-110" android:fragment="com.android.settings.network.NetworkDashboardFragment" settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/> Loading @@ -34,6 +35,7 @@ android:title="@string/connected_devices_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_connected_device" android:order="-100" android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment" settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/> Loading @@ -42,6 +44,7 @@ android:title="@string/app_and_notification_dashboard_title" android:summary="@string/app_and_notification_dashboard_summary" android:icon="@drawable/ic_homepage_apps" android:order="-90" android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"/> <Preference Loading @@ -50,6 +53,7 @@ android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_battery" android:fragment="com.android.settings.fuelgauge.PowerUsageSummary" android:order="-80" settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/> <Preference Loading @@ -57,6 +61,7 @@ android:title="@string/display_settings" android:summary="@string/display_dashboard_summary" android:icon="@drawable/ic_homepage_display" android:order="-70" android:fragment="com.android.settings.DisplaySettings"/> <Preference Loading @@ -64,6 +69,7 @@ android:title="@string/sound_settings" android:summary="@string/sound_dashboard_summary" android:icon="@drawable/ic_homepage_sound" android:order="-60" android:fragment="com.android.settings.notification.SoundSettings"/> <Preference Loading @@ -71,6 +77,7 @@ android:title="@string/storage_settings" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_storage" android:order="-50" android:fragment="com.android.settings.deviceinfo.StorageSettings" settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/> Loading @@ -79,6 +86,7 @@ android:title="@string/security_settings_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_security" android:order="-40" android:fragment="com.android.settings.security.SecuritySettings" settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/> Loading @@ -87,6 +95,7 @@ android:title="@string/account_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_accounts" android:order="-30" android:fragment="com.android.settings.accounts.AccountDashboardFragment" settings:controller="com.android.settings.accounts.TopLevelAccountEntryPreferenceController"/> Loading @@ -95,6 +104,7 @@ android:title="@string/accessibility_settings" android:summary="@string/accessibility_settings_summary" android:icon="@drawable/ic_homepage_accessibility" android:order="-20" android:fragment="com.android.settings.accessibility.AccessibilitySettings"/> <Preference Loading @@ -102,12 +112,14 @@ android:title="@string/header_category_system" android:summary="@string/system_dashboard_summary" android:icon="@drawable/ic_homepage_system_dashboard" android:order="-10" android:fragment="com.android.settings.system.SystemDashboardFragment"/> <Preference android:key="top_level_support" android:summary="@string/support_summary" android:title="@string/page_tab_title_support" android:icon="@drawable/ic_homepage_support"/> android:icon="@drawable/ic_homepage_support" android:order="100"/> </PreferenceScreen> No newline at end of file src/com/android/settings/dashboard/DashboardAdapter.java +2 −32 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.dashboard; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; Loading Loading @@ -51,7 +50,6 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; import com.android.settingslib.utils.IconCache; Loading @@ -65,7 +63,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash @VisibleForTesting static final String STATE_CONDITION_EXPANDED = "condition_expanded"; static final String META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB = "com.android.settings.bg.argb"; private final IconCache mCache; private final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -248,10 +246,6 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash return mDashboardData.getItemEntityById(itemId); } public Suggestion getSuggestion(int position) { return mSuggestionAdapter.getSuggestion(position); } @VisibleForTesting void notifyDashboardDataChanged(DashboardData prevData) { if (mFirstFrameDrawn && prevData != null) { Loading Loading @@ -322,31 +316,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash if (!TextUtils.equals(tileIcon.getResPackage(), mContext.getPackageName()) && !(icon instanceof RoundedHomepageIcon)) { icon = new RoundedHomepageIcon(mContext, icon); final Bundle metaData = tile.getMetaData(); try { if (metaData != null) { // Load from bg.argb first int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0 /* default */); // Not found, load from bg.hint if (bgColor == 0) { final int colorRes = metaData.getInt( TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, 0 /* default */); if (colorRes != 0) { bgColor = mContext.getPackageManager() .getResourcesForApplication(tileIcon.getResPackage()) .getColor(colorRes, null /* theme */); } } // If found anything, use it. if (bgColor != 0) { ((RoundedHomepageIcon) icon).setBackgroundColor(bgColor); } } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Failed to set background color for " + tile.getPackageName()); } ((RoundedHomepageIcon) icon).setBackgroundColor(mContext, tile); mCache.updateIcon(tileIcon, icon); } holder.icon.setImageDrawable(icon); Loading src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Context; import android.content.IContentProvider; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; import android.provider.Settings; Loading @@ -42,6 +43,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.RoundedHomepageIcon; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.drawer.DashboardCategory; Loading @@ -49,7 +51,6 @@ import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; Loading Loading @@ -112,7 +113,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { pref.setKey(getDashboardKeyForTile(tile)); } bindSummary(pref, tile); bindIcon(pref, tile); bindIcon(pref, tile, forceRoundedIcon); final Bundle metadata = tile.getMetaData(); String clsName = null; String action = null; Loading Loading @@ -192,10 +193,16 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } @VisibleForTesting void bindIcon(Preference preference, Tile tile) { void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) { final Icon tileIcon = tile.getIcon(mContext); if (tileIcon != null) { preference.setIcon(tileIcon.loadDrawable(preference.getContext())); Drawable iconDrawable = tileIcon.loadDrawable(preference.getContext()); if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), tile.getPackageName())) { iconDrawable = new RoundedHomepageIcon(mContext, iconDrawable); ((RoundedHomepageIcon) iconDrawable).setBackgroundColor(mContext, tile); } preference.setIcon(iconDrawable); } else if (tile.getMetaData() != null && tile.getMetaData().containsKey(META_DATA_PREFERENCE_ICON_URI)) { ThreadUtils.postOnBackgroundThread(() -> { Loading src/com/android/settings/dashboard/DashboardFragmentRegistry.java +3 −2 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class DashboardFragmentRegistry { static { PARENT_TO_CATEGORY_KEY_MAP = new ArrayMap<>(); PARENT_TO_CATEGORY_KEY_MAP.put(TopLevelSettings.class.getName(), CategoryKey.CATEGORY_HOMEPAGE); // TODO(b/110405144): Add the mapping when IA.homepage intent-filter is is removed. // PARENT_TO_CATEGORY_KEY_MAP.put(TopLevelSettings.class.getName(), // CategoryKey.CATEGORY_HOMEPAGE); PARENT_TO_CATEGORY_KEY_MAP.put( NetworkDashboardFragment.class.getName(), CategoryKey.CATEGORY_NETWORK); PARENT_TO_CATEGORY_KEY_MAP.put(ConnectedDeviceDashboardFragment.class.getName(), Loading src/com/android/settings/widget/RoundedHomepageIcon.java +37 −4 Original line number Diff line number Diff line Loading @@ -18,22 +18,28 @@ package com.android.settings.widget; import static androidx.annotation.VisibleForTesting.NONE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.util.Log; import com.android.settings.R; import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settingslib.drawer.Tile; public class RoundedHomepageIcon extends LayerDrawable { private static final String TAG = "RoundedHomepageIcon"; @VisibleForTesting(otherwise = NONE) public int mBackgroundColor = -1; int mBackgroundColor = -1; public RoundedHomepageIcon(Context context, Drawable foreground) { super(new Drawable[]{ Loading @@ -45,6 +51,33 @@ public class RoundedHomepageIcon extends LayerDrawable { setLayerInset(1 /* index */, insetPx, insetPx, insetPx, insetPx); } public void setBackgroundColor(Context context, Tile tile) { final Bundle metaData = tile.getMetaData(); try { if (metaData != null) { // Load from bg.argb first int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0 /* default */); // Not found, load from bg.hint if (bgColor == 0) { final int colorRes = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, 0 /* default */); if (colorRes != 0) { bgColor = context.getPackageManager() .getResourcesForApplication(tile.getPackageName()) .getColor(colorRes, null /* theme */); } } // If found anything, use it. if (bgColor != 0) { setBackgroundColor(bgColor); } } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Failed to set background color for " + tile.getPackageName()); } } public void setBackgroundColor(int color) { mBackgroundColor = color; getDrawable(0).setColorFilter(color, PorterDuff.Mode.SRC_ATOP); Loading Loading
res/xml/top_level_settings.xml +13 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ android:title="@string/network_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_network" android:order="-110" android:fragment="com.android.settings.network.NetworkDashboardFragment" settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/> Loading @@ -34,6 +35,7 @@ android:title="@string/connected_devices_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_connected_device" android:order="-100" android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment" settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/> Loading @@ -42,6 +44,7 @@ android:title="@string/app_and_notification_dashboard_title" android:summary="@string/app_and_notification_dashboard_summary" android:icon="@drawable/ic_homepage_apps" android:order="-90" android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"/> <Preference Loading @@ -50,6 +53,7 @@ android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_battery" android:fragment="com.android.settings.fuelgauge.PowerUsageSummary" android:order="-80" settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/> <Preference Loading @@ -57,6 +61,7 @@ android:title="@string/display_settings" android:summary="@string/display_dashboard_summary" android:icon="@drawable/ic_homepage_display" android:order="-70" android:fragment="com.android.settings.DisplaySettings"/> <Preference Loading @@ -64,6 +69,7 @@ android:title="@string/sound_settings" android:summary="@string/sound_dashboard_summary" android:icon="@drawable/ic_homepage_sound" android:order="-60" android:fragment="com.android.settings.notification.SoundSettings"/> <Preference Loading @@ -71,6 +77,7 @@ android:title="@string/storage_settings" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_storage" android:order="-50" android:fragment="com.android.settings.deviceinfo.StorageSettings" settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/> Loading @@ -79,6 +86,7 @@ android:title="@string/security_settings_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_security" android:order="-40" android:fragment="com.android.settings.security.SecuritySettings" settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/> Loading @@ -87,6 +95,7 @@ android:title="@string/account_dashboard_title" android:summary="@string/summary_placeholder" android:icon="@drawable/ic_homepage_accounts" android:order="-30" android:fragment="com.android.settings.accounts.AccountDashboardFragment" settings:controller="com.android.settings.accounts.TopLevelAccountEntryPreferenceController"/> Loading @@ -95,6 +104,7 @@ android:title="@string/accessibility_settings" android:summary="@string/accessibility_settings_summary" android:icon="@drawable/ic_homepage_accessibility" android:order="-20" android:fragment="com.android.settings.accessibility.AccessibilitySettings"/> <Preference Loading @@ -102,12 +112,14 @@ android:title="@string/header_category_system" android:summary="@string/system_dashboard_summary" android:icon="@drawable/ic_homepage_system_dashboard" android:order="-10" android:fragment="com.android.settings.system.SystemDashboardFragment"/> <Preference android:key="top_level_support" android:summary="@string/support_summary" android:title="@string/page_tab_title_support" android:icon="@drawable/ic_homepage_support"/> android:icon="@drawable/ic_homepage_support" android:order="100"/> </PreferenceScreen> No newline at end of file
src/com/android/settings/dashboard/DashboardAdapter.java +2 −32 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.dashboard; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; Loading Loading @@ -51,7 +50,6 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; import com.android.settingslib.utils.IconCache; Loading @@ -65,7 +63,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash @VisibleForTesting static final String STATE_CONDITION_EXPANDED = "condition_expanded"; static final String META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB = "com.android.settings.bg.argb"; private final IconCache mCache; private final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -248,10 +246,6 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash return mDashboardData.getItemEntityById(itemId); } public Suggestion getSuggestion(int position) { return mSuggestionAdapter.getSuggestion(position); } @VisibleForTesting void notifyDashboardDataChanged(DashboardData prevData) { if (mFirstFrameDrawn && prevData != null) { Loading Loading @@ -322,31 +316,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash if (!TextUtils.equals(tileIcon.getResPackage(), mContext.getPackageName()) && !(icon instanceof RoundedHomepageIcon)) { icon = new RoundedHomepageIcon(mContext, icon); final Bundle metaData = tile.getMetaData(); try { if (metaData != null) { // Load from bg.argb first int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0 /* default */); // Not found, load from bg.hint if (bgColor == 0) { final int colorRes = metaData.getInt( TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, 0 /* default */); if (colorRes != 0) { bgColor = mContext.getPackageManager() .getResourcesForApplication(tileIcon.getResPackage()) .getColor(colorRes, null /* theme */); } } // If found anything, use it. if (bgColor != 0) { ((RoundedHomepageIcon) icon).setBackgroundColor(bgColor); } } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Failed to set background color for " + tile.getPackageName()); } ((RoundedHomepageIcon) icon).setBackgroundColor(mContext, tile); mCache.updateIcon(tileIcon, icon); } holder.icon.setImageDrawable(icon); Loading
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Context; import android.content.IContentProvider; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; import android.provider.Settings; Loading @@ -42,6 +43,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.RoundedHomepageIcon; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.drawer.DashboardCategory; Loading @@ -49,7 +51,6 @@ import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; Loading Loading @@ -112,7 +113,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { pref.setKey(getDashboardKeyForTile(tile)); } bindSummary(pref, tile); bindIcon(pref, tile); bindIcon(pref, tile, forceRoundedIcon); final Bundle metadata = tile.getMetaData(); String clsName = null; String action = null; Loading Loading @@ -192,10 +193,16 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } @VisibleForTesting void bindIcon(Preference preference, Tile tile) { void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) { final Icon tileIcon = tile.getIcon(mContext); if (tileIcon != null) { preference.setIcon(tileIcon.loadDrawable(preference.getContext())); Drawable iconDrawable = tileIcon.loadDrawable(preference.getContext()); if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), tile.getPackageName())) { iconDrawable = new RoundedHomepageIcon(mContext, iconDrawable); ((RoundedHomepageIcon) iconDrawable).setBackgroundColor(mContext, tile); } preference.setIcon(iconDrawable); } else if (tile.getMetaData() != null && tile.getMetaData().containsKey(META_DATA_PREFERENCE_ICON_URI)) { ThreadUtils.postOnBackgroundThread(() -> { Loading
src/com/android/settings/dashboard/DashboardFragmentRegistry.java +3 −2 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class DashboardFragmentRegistry { static { PARENT_TO_CATEGORY_KEY_MAP = new ArrayMap<>(); PARENT_TO_CATEGORY_KEY_MAP.put(TopLevelSettings.class.getName(), CategoryKey.CATEGORY_HOMEPAGE); // TODO(b/110405144): Add the mapping when IA.homepage intent-filter is is removed. // PARENT_TO_CATEGORY_KEY_MAP.put(TopLevelSettings.class.getName(), // CategoryKey.CATEGORY_HOMEPAGE); PARENT_TO_CATEGORY_KEY_MAP.put( NetworkDashboardFragment.class.getName(), CategoryKey.CATEGORY_NETWORK); PARENT_TO_CATEGORY_KEY_MAP.put(ConnectedDeviceDashboardFragment.class.getName(), Loading
src/com/android/settings/widget/RoundedHomepageIcon.java +37 −4 Original line number Diff line number Diff line Loading @@ -18,22 +18,28 @@ package com.android.settings.widget; import static androidx.annotation.VisibleForTesting.NONE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.util.Log; import com.android.settings.R; import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settingslib.drawer.Tile; public class RoundedHomepageIcon extends LayerDrawable { private static final String TAG = "RoundedHomepageIcon"; @VisibleForTesting(otherwise = NONE) public int mBackgroundColor = -1; int mBackgroundColor = -1; public RoundedHomepageIcon(Context context, Drawable foreground) { super(new Drawable[]{ Loading @@ -45,6 +51,33 @@ public class RoundedHomepageIcon extends LayerDrawable { setLayerInset(1 /* index */, insetPx, insetPx, insetPx, insetPx); } public void setBackgroundColor(Context context, Tile tile) { final Bundle metaData = tile.getMetaData(); try { if (metaData != null) { // Load from bg.argb first int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0 /* default */); // Not found, load from bg.hint if (bgColor == 0) { final int colorRes = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, 0 /* default */); if (colorRes != 0) { bgColor = context.getPackageManager() .getResourcesForApplication(tile.getPackageName()) .getColor(colorRes, null /* theme */); } } // If found anything, use it. if (bgColor != 0) { setBackgroundColor(bgColor); } } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Failed to set background color for " + tile.getPackageName()); } } public void setBackgroundColor(int color) { mBackgroundColor = color; getDrawable(0).setColorFilter(color, PorterDuff.Mode.SRC_ATOP); Loading