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

Commit c498a875 authored by Tsung-Mao Fang's avatar Tsung-Mao Fang Committed by Android (Google) Code Review
Browse files

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

parents 0ae76f5d 9e991026
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ android_library {
        "androidx.appcompat_appcompat",
        "androidx.appcompat_appcompat",
        "androidx.lifecycle_lifecycle-runtime",
        "androidx.lifecycle_lifecycle-runtime",
        "androidx.mediarouter_mediarouter-nodeps",
        "androidx.mediarouter_mediarouter-nodeps",
        "iconloader",


        "SettingsLibHelpUtils",
        "SettingsLibHelpUtils",
        "SettingsLibRestrictedLockUtils",
        "SettingsLibRestrictedLockUtils",
+18 −0
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@ package com.android.settingslib;
import android.annotation.ColorInt;
import android.annotation.ColorInt;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -13,6 +14,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.location.LocationManager;
import android.location.LocationManager;
import android.media.AudioManager;
import android.media.AudioManager;
@@ -27,8 +29,11 @@ import android.telephony.AccessNetworkConstants;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.ServiceState;


import androidx.annotation.NonNull;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.UserIcons;
import com.android.internal.util.UserIcons;
import com.android.launcher3.icons.IconFactory;
import com.android.settingslib.drawable.UserIconDrawable;
import com.android.settingslib.drawable.UserIconDrawable;


import java.text.NumberFormat;
import java.text.NumberFormat;
@@ -424,6 +429,19 @@ public class Utils {
        return state;
        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) {
    private static boolean isNotInIwlan(ServiceState serviceState) {
        final NetworkRegistrationInfo networkRegWlan = serviceState.getNetworkRegistrationInfo(
        final NetworkRegistrationInfo networkRegWlan = serviceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS,
                NetworkRegistrationInfo.DOMAIN_PS,
+6 −5
Original line number Original line Diff line number Diff line
@@ -59,6 +59,7 @@ import androidx.lifecycle.OnLifecycleEvent;


import com.android.internal.R;
import com.android.internal.R;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.ArrayUtils;
import com.android.settingslib.Utils;


import java.io.File;
import java.io.File;
import java.io.IOException;
import java.io.IOException;
@@ -495,7 +496,7 @@ public class ApplicationsState {
            return;
            return;
        }
        }
        synchronized (entry) {
        synchronized (entry) {
            entry.ensureIconLocked(mContext, mDrawableFactory);
            entry.ensureIconLocked(mContext);
        }
        }
    }
    }


@@ -1216,7 +1217,7 @@ public class ApplicationsState {
                                AppEntry entry = mAppEntries.get(i);
                                AppEntry entry = mAppEntries.get(i);
                                if (entry.icon == null || !entry.mounted) {
                                if (entry.icon == null || !entry.mounted) {
                                    synchronized (entry) {
                                    synchronized (entry) {
                                        if (entry.ensureIconLocked(mContext, mDrawableFactory)) {
                                        if (entry.ensureIconLocked(mContext)) {
                                            if (!mRunning) {
                                            if (!mRunning) {
                                                mRunning = true;
                                                mRunning = true;
                                                Message m = mMainHandler.obtainMessage(
                                                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.icon == null) {
                if (this.apkFile.exists()) {
                if (this.apkFile.exists()) {
                    this.icon = drawableFactory.getBadgedIcon(info);
                    this.icon = Utils.getBadgedIcon(context, info);
                    return true;
                    return true;
                } else {
                } else {
                    this.mounted = false;
                    this.mounted = false;
@@ -1601,7 +1602,7 @@ public class ApplicationsState {
                // its icon.
                // its icon.
                if (this.apkFile.exists()) {
                if (this.apkFile.exists()) {
                    this.mounted = true;
                    this.mounted = true;
                    this.icon = drawableFactory.getBadgedIcon(info);
                    this.icon = Utils.getBadgedIcon(context, info);
                    return true;
                    return true;
                }
                }
            }
            }