diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 3fc3f3e65d375..cff669e6c5b9e 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -778,6 +778,11 @@ public class ChooserActivity extends ResolverActivity implements mDirectShareShortcutInfoCache = new HashMap<>(); } + @Override + protected int appliedThemeResId() { + return R.style.Theme_DeviceDefault_Chooser; + } + private AppPredictor setupAppPredictorForUser(UserHandle userHandle, AppPredictor.Callback appPredictorCallback) { AppPredictor appPredictor = getAppPredictorForDirectShareIfEnabled(userHandle); diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 3084f2a84945f..4b5735ce34edd 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -324,7 +324,7 @@ public class ResolverActivity extends Activity implements protected void onCreate(Bundle savedInstanceState, Intent intent, CharSequence title, int defaultTitleRes, Intent[] initialIntents, List rList, boolean supportsAlwaysUseOption) { - setTheme(R.style.Theme_DeviceDefault_Resolver); + setTheme(appliedThemeResId()); super.onCreate(savedInstanceState); // Determine whether we should show that intent is forwarded @@ -507,6 +507,10 @@ public class ResolverActivity extends Activity implements /* shouldShowNoCrossProfileIntentsEmptyState= */ getUser().equals(intentUser)); } + protected int appliedThemeResId() { + return R.style.Theme_DeviceDefault_Resolver; + } + /** * Returns the user id of the user that the starting intent originated from. *

This is not necessarily equal to {@link #getUserId()} or {@link UserHandle#myUserId()}, diff --git a/core/java/com/android/internal/app/SimpleIconFactory.java b/core/java/com/android/internal/app/SimpleIconFactory.java index d618cdf86865a..ffe2dbe4ccc06 100644 --- a/core/java/com/android/internal/app/SimpleIconFactory.java +++ b/core/java/com/android/internal/app/SimpleIconFactory.java @@ -20,6 +20,7 @@ import static android.content.Context.ACTIVITY_SERVICE; import static android.graphics.Paint.DITHER_FLAG; import static android.graphics.Paint.FILTER_BITMAP_FLAG; +import android.annotation.AttrRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; @@ -46,6 +47,7 @@ import android.graphics.drawable.DrawableWrapper; import android.os.UserHandle; import android.util.AttributeSet; import android.util.Pools.SynchronizedPool; +import android.util.TypedValue; import com.android.internal.R; @@ -92,10 +94,8 @@ public class SimpleIconFactory { final ActivityManager am = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE); final int iconDpi = (am == null) ? 0 : am.getLauncherLargeIconDensity(); - final Resources r = ctx.getResources(); - final int iconSize = r.getDimensionPixelSize(R.dimen.resolver_icon_size); - final int badgeSize = r.getDimensionPixelSize(R.dimen.resolver_badge_size); - + final int iconSize = getIconSizeFromContext(ctx); + final int badgeSize = getBadgeSizeFromContext(ctx); instance = new SimpleIconFactory(ctx, iconDpi, iconSize, badgeSize); instance.setWrapperBackgroundColor(Color.WHITE); } @@ -103,6 +103,27 @@ public class SimpleIconFactory { return instance; } + private static int getAttrDimFromContext(Context ctx, @AttrRes int attrId, String errorMsg) { + final Resources res = ctx.getResources(); + TypedValue outVal = new TypedValue(); + if (!ctx.getTheme().resolveAttribute(attrId, outVal, true)) { + throw new IllegalStateException(errorMsg); + } + return res.getDimensionPixelSize(outVal.resourceId); + } + + private static int getIconSizeFromContext(Context ctx) { + return getAttrDimFromContext(ctx, + com.android.internal.R.attr.iconfactoryIconSize, + "Expected theme to define iconfactoryIconSize."); + } + + private static int getBadgeSizeFromContext(Context ctx) { + return getAttrDimFromContext(ctx, + com.android.internal.R.attr.iconfactoryBadgeSize, + "Expected theme to define iconfactoryBadgeSize."); + } + /** * Recycles the SimpleIconFactory so others may use it. * diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 0bf504595714b..3cd0f03de7272 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -5053,7 +5053,7 @@ android:forceQueryable="true" android:directBootAware="true"> + + + diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 2ac61ecad2e57..c7ad5da7d1c7a 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -810,7 +810,8 @@ 4dp 288dp 72dp - 42dp + 56dp + 22dp 32dp 8dp 18dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 369a3e51df264..52aab77e32a4c 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2534,6 +2534,7 @@ + @@ -3784,8 +3785,11 @@ - + + + + @@ -3794,6 +3798,7 @@ + @@ -4019,4 +4024,5 @@ + diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index 81ec27841aa74..1afaf4f7f1842 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -1680,6 +1680,8 @@ easier. ?attr/dialogPreferredPadding @android:color/transparent @style/Widget.DeviceDefault.Resolver.TabWidget + @dimen/resolver_icon_size + @dimen/resolver_badge_size + +