Merge "Create a util method to get icon badged."

This commit is contained in:
Tsung-Mao Fang
2020-02-06 09:01:21 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ android_library {
"androidx.appcompat_appcompat",
"androidx.lifecycle_lifecycle-runtime",
"androidx.mediarouter_mediarouter-nodeps",
"iconloader",
"SettingsLibHelpUtils",
"SettingsLibRestrictedLockUtils",

View File

@@ -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,

View File

@@ -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;
}
}