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

Commit 46b3b3c0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adding API to check if an icon returned by PackageManager is a fallback icon"

parents dffc1e33 77a24169
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11934,6 +11934,7 @@ package android.content.pm {
    method public boolean hasSigningCertificate(int, @NonNull byte[], int);
    method public abstract boolean hasSystemFeature(@NonNull String);
    method public abstract boolean hasSystemFeature(@NonNull String, int);
    method public boolean isDefaultApplicationIcon(@NonNull android.graphics.drawable.Drawable);
    method public boolean isDeviceUpgrading();
    method public abstract boolean isInstantApp();
    method public abstract boolean isInstantApp(@NonNull String);
+16 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.content.pm.dex.ArtManager;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Rect;
import android.graphics.drawable.AdaptiveIconDrawable;
import android.graphics.drawable.Drawable;
import android.net.wifi.WifiManager;
import android.os.Build;
@@ -7612,4 +7613,19 @@ public abstract class PackageManager {
            "sendDeviceCustomizationReadyBroadcast not implemented in subclass");
    }

    /**
     * Returns if the provided drawable represents the default activity icon provided by the system.
     *
     * PackageManager provides a default icon for any package/activity if the app itself does not
     * define one or if the system encountered any error when loading the icon.
     *
     * @return true if the drawable represents the default activity icon, false otherwise
     * @see #getDefaultActivityIcon()
     */
    public boolean isDefaultApplicationIcon(@NonNull Drawable drawable) {
        int resId = drawable instanceof AdaptiveIconDrawable
                ? ((AdaptiveIconDrawable) drawable).getSourceDrawableResId() : Resources.ID_NULL;
        return resId == com.android.internal.R.drawable.sym_def_app_icon
                || resId == com.android.internal.R.drawable.sym_app_on_sd_unavailable_icon;
    }
}
+15 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.graphics.drawable;

import android.annotation.DrawableRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
@@ -223,6 +224,7 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback
        final int deviceDensity = Drawable.resolveDensity(r, 0);
        state.setDensity(deviceDensity);
        state.mSrcDensityOverride = mSrcDensityOverride;
        state.mSourceDrawableId = Resources.getAttributeSetSourceResId(attrs);

        final ChildDrawable[] array = state.mChildren;
        for (int i = 0; i < state.mChildren.length; i++) {
@@ -445,6 +447,17 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback
        }
    }

    /**
     * If the drawable was inflated from XML, this returns the resource ID for the drawable
     *
     * @hide
     */
    @DrawableRes
    public int getSourceDrawableResId() {
        final LayerState state = mLayerState;
        return state == null ? Resources.ID_NULL : state.mSourceDrawableId;
    }

    /**
     * Inflates child layers using the specified parser.
     */
@@ -944,6 +957,8 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback
        @Config int mChangingConfigurations;
        @Config int mChildrenChangingConfigurations;

        @DrawableRes int mSourceDrawableId = Resources.ID_NULL;

        private boolean mCheckedOpacity;
        private int mOpacity;