Merge "Adding API to check if an icon returned by PackageManager is a fallback icon"
This commit is contained in:
committed by
Android (Google) Code Review
commit
46b3b3c0c1
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user