Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 516cd210 authored by Silin Huang's avatar Silin Huang Committed by Android (Google) Code Review
Browse files

Merge "Add a tile service meta-data for QuickAccessWalletServiceInfo that...

Merge "Add a tile service meta-data for QuickAccessWalletServiceInfo that fetches a drawable for wallet tile." into sc-dev
parents faa7a438 3d9cf89d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -177,6 +177,14 @@ public interface QuickAccessWalletClient extends Closeable {
    @Nullable
    Drawable getLogo();

    /**
     * Returns the tile icon associated with the {@link QuickAccessWalletService}.
     *
     * @hide
     */
    @Nullable
    Drawable getTileIcon();

    /**
     * Returns the service label specified by {@code android:label} in the service manifest entry.
     *
+6 −0
Original line number Diff line number Diff line
@@ -307,6 +307,12 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
        return mServiceInfo == null ? null : mServiceInfo.getWalletLogo(mContext);
    }

    @Nullable
    @Override
    public Drawable getTileIcon() {
        return mServiceInfo == null ? null : mServiceInfo.getTileIcon();
    }

    @Override
    @Nullable
    public CharSequence getServiceLabel() {
+7 −0
Original line number Diff line number Diff line
@@ -195,6 +195,13 @@ public abstract class QuickAccessWalletService extends Service {
     */
    public static final String SERVICE_META_DATA = "android.quickaccesswallet";

    /**
     * Name of the QuickAccessWallet tile service meta-data.
     *
     * @hide
     */
    public static final String TILE_SERVICE_META_DATA = "android.quickaccesswallet.tile";

    private final Handler mHandler = new Handler(Looper.getMainLooper());

    /**
+37 −2
Original line number Diff line number Diff line
@@ -56,12 +56,15 @@ class QuickAccessWalletServiceInfo {

    private final ServiceInfo mServiceInfo;
    private final ServiceMetadata mServiceMetadata;
    private final TileServiceMetadata mTileServiceMetadata;

    private QuickAccessWalletServiceInfo(
            @NonNull ServiceInfo serviceInfo,
            @NonNull ServiceMetadata metadata) {
            @NonNull ServiceMetadata metadata,
            @NonNull TileServiceMetadata tileServiceMetadata) {
        mServiceInfo = serviceInfo;
        mServiceMetadata = metadata;
        mTileServiceMetadata = tileServiceMetadata;
    }

    @Nullable
@@ -84,7 +87,9 @@ class QuickAccessWalletServiceInfo {
        }

        ServiceMetadata metadata = parseServiceMetadata(context, serviceInfo);
        return new QuickAccessWalletServiceInfo(serviceInfo, metadata);
        TileServiceMetadata tileServiceMetadata =
                new TileServiceMetadata(parseTileServiceMetadata(context, serviceInfo));
        return new QuickAccessWalletServiceInfo(serviceInfo, metadata, tileServiceMetadata);
    }

    private static ComponentName getDefaultPaymentApp(Context context) {
@@ -105,6 +110,31 @@ class QuickAccessWalletServiceInfo {
        return resolveInfos.isEmpty() ? null : resolveInfos.get(0).serviceInfo;
    }

    private static class TileServiceMetadata {
        @Nullable
        private final Drawable mTileIcon;

        private TileServiceMetadata(@Nullable Drawable tileIcon) {
            mTileIcon = tileIcon;
        }
    }

    @Nullable
    private static Drawable parseTileServiceMetadata(Context context, ServiceInfo serviceInfo) {
        PackageManager pm = context.getPackageManager();
        int tileIconDrawableId =
                serviceInfo.metaData.getInt(QuickAccessWalletService.TILE_SERVICE_META_DATA);
        if (tileIconDrawableId != 0) {
            try {
                Resources resources = pm.getResourcesForApplication(serviceInfo.applicationInfo);
                return resources.getDrawable(tileIconDrawableId, null);
            } catch (PackageManager.NameNotFoundException e) {
                Log.e(TAG, "Error parsing quickaccesswallet tile service meta-data", e);
            }
        }
        return null;
    }

    private static class ServiceMetadata {
        @Nullable
        private final String mSettingsActivity;
@@ -216,6 +246,11 @@ class QuickAccessWalletServiceInfo {
        return mServiceInfo.loadIcon(context.getPackageManager());
    }

    @Nullable
    Drawable getTileIcon() {
        return mTileServiceMetadata.mTileIcon;
    }

    @NonNull
    CharSequence getShortcutShortLabel(Context context) {
        if (!TextUtils.isEmpty(mServiceMetadata.mShortcutShortLabel)) {
+8 −17
Original line number Diff line number Diff line
@@ -20,18 +20,9 @@
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24"
    android:viewportHeight="24">
  <group>
    <clip-path
        android:pathData="M2.15,1.54h20v21h-20z"/>
        android:viewportHeight="24"
        android:tint="?attr/colorControlNormal">
  <path
        android:pathData="M19,21.83H5.35a3.19,3.19 0,0 1,-3.2 -3.19v-7A3.19,3.19 0,0 1,5.35 8.5H19a3.19,3.19 0,0 1,3.19 3.19v7A3.19,3.19 0,0 1,19 21.83ZM5.35,10.44A1.25,1.25 0,0 0,4.1 11.69v7a1.25,1.25 0,0 0,1.25 1.24H19a1.25,1.25 0,0 0,1.25 -1.24v-7A1.25,1.25 0,0 0,19 10.44Z"
        android:fillColor="#FF000000" />
    <path
        android:pathData="M4.7,10.16 L4.21,8.57 16,5a3.56,3.56 0,0 1,3.1 0.25c1,0.67 1.65,2 1.89,4l-1.66,0.2C19.12,8 18.72,7 18.15,6.62a2,2 0,0 0,-1.7 0Z"
        android:fillColor="#FF000000" />
    <path
        android:pathData="M4.43,10.47l-1,-1.34 7.31,-5.44c3,-1.86 5.51,1 6.33,2L15.82,6.77c-2.1,-2.44 -3.23,-2.26 -4.14,-1.7Z"
        android:fillColor="#FF000000" />
  </group>
      android:fillColor="@android:color/white"
      android:pathData="M20,4L4,4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,6c0,-1.11 -0.89,-2 -2,-2zM20,18L4,18v-6h16v6zM20,8L4,8L4,6h16v2z"/>
</vector>
Loading