Merge "Create a util method to get icon badged."
This commit is contained in:
committed by
Android (Google) Code Review
commit
c498a87543
@@ -10,6 +10,7 @@ android_library {
|
||||
"androidx.appcompat_appcompat",
|
||||
"androidx.lifecycle_lifecycle-runtime",
|
||||
"androidx.mediarouter_mediarouter-nodeps",
|
||||
"iconloader",
|
||||
|
||||
"SettingsLibHelpUtils",
|
||||
"SettingsLibRestrictedLockUtils",
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.android.settingslib;
|
||||
import android.annotation.ColorInt;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
@@ -13,6 +14,7 @@ import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.location.LocationManager;
|
||||
import android.media.AudioManager;
|
||||
@@ -27,8 +29,11 @@ import android.telephony.AccessNetworkConstants;
|
||||
import android.telephony.NetworkRegistrationInfo;
|
||||
import android.telephony.ServiceState;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.UserIcons;
|
||||
import com.android.launcher3.icons.IconFactory;
|
||||
import com.android.settingslib.drawable.UserIconDrawable;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
@@ -424,6 +429,19 @@ public class Utils {
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link Drawable} that represents the app icon
|
||||
*/
|
||||
public static @NonNull Drawable getBadgedIcon(
|
||||
@NonNull Context context, @NonNull ApplicationInfo appInfo) {
|
||||
final UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid);
|
||||
try (IconFactory iconFactory = IconFactory.obtain(context)) {
|
||||
final Bitmap iconBmp = iconFactory.createBadgedIconBitmap(
|
||||
appInfo.loadUnbadgedIcon(context.getPackageManager()), user, false).icon;
|
||||
return new BitmapDrawable(context.getResources(), iconBmp);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isNotInIwlan(ServiceState serviceState) {
|
||||
final NetworkRegistrationInfo networkRegWlan = serviceState.getNetworkRegistrationInfo(
|
||||
NetworkRegistrationInfo.DOMAIN_PS,
|
||||
|
||||
@@ -59,6 +59,7 @@ import androidx.lifecycle.OnLifecycleEvent;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
import com.android.settingslib.Utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -495,7 +496,7 @@ public class ApplicationsState {
|
||||
return;
|
||||
}
|
||||
synchronized (entry) {
|
||||
entry.ensureIconLocked(mContext, mDrawableFactory);
|
||||
entry.ensureIconLocked(mContext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1216,7 +1217,7 @@ public class ApplicationsState {
|
||||
AppEntry entry = mAppEntries.get(i);
|
||||
if (entry.icon == null || !entry.mounted) {
|
||||
synchronized (entry) {
|
||||
if (entry.ensureIconLocked(mContext, mDrawableFactory)) {
|
||||
if (entry.ensureIconLocked(mContext)) {
|
||||
if (!mRunning) {
|
||||
mRunning = true;
|
||||
Message m = mMainHandler.obtainMessage(
|
||||
@@ -1587,10 +1588,10 @@ public class ApplicationsState {
|
||||
}
|
||||
}
|
||||
|
||||
boolean ensureIconLocked(Context context, IconDrawableFactory drawableFactory) {
|
||||
boolean ensureIconLocked(Context context) {
|
||||
if (this.icon == null) {
|
||||
if (this.apkFile.exists()) {
|
||||
this.icon = drawableFactory.getBadgedIcon(info);
|
||||
this.icon = Utils.getBadgedIcon(context, info);
|
||||
return true;
|
||||
} else {
|
||||
this.mounted = false;
|
||||
@@ -1601,7 +1602,7 @@ public class ApplicationsState {
|
||||
// its icon.
|
||||
if (this.apkFile.exists()) {
|
||||
this.mounted = true;
|
||||
this.icon = drawableFactory.getBadgedIcon(info);
|
||||
this.icon = Utils.getBadgedIcon(context, info);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user