Loading packages/SystemUI/src/com/android/systemui/toast/SystemUIToast.java +15 −37 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.UserHandle; import android.util.IconDrawableFactory; import android.util.Log; import android.view.LayoutInflater; import android.view.View; Loading @@ -40,10 +41,6 @@ import android.widget.ImageView; import android.widget.TextView; import com.android.internal.R; import com.android.launcher3.icons.BaseIconFactory.IconOptions; import com.android.launcher3.icons.IconFactory; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.systemui.plugins.ToastPlugin; /** Loading Loading @@ -254,48 +251,29 @@ public class SystemUIToast implements ToastPlugin.Toast { return null; } final Context userContext; try { userContext = context.createPackageContextAsUser("android", 0, new UserHandle(userId)); } catch (NameNotFoundException e) { Log.e(TAG, "Could not create user package context"); return null; } final ApplicationsState appState = ApplicationsState.getInstance((Application) context.getApplicationContext()); if (!appState.isUserAdded(userId)) { Log.d(TAG, "user hasn't been fully initialized, not showing an app icon for " + "packageName=" + packageName); final PackageManager packageManager = context.getPackageManager(); final ApplicationInfo appInfo = packageManager.getApplicationInfoAsUser( packageName, PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA), userId); if (appInfo == null || !showApplicationIcon(appInfo, packageManager)) { return null; } final PackageManager packageManager = userContext.getPackageManager(); final AppEntry appEntry = appState.getEntry(packageName, userId); if (appEntry == null || appEntry.info == null || !showApplicationIcon(appEntry.info, packageManager)) { IconDrawableFactory iconFactory = IconDrawableFactory.newInstance(context); return iconFactory.getBadgedIcon(appInfo, UserHandle.getUserId(appInfo.uid)); } catch (NameNotFoundException e) { Log.e(TAG, "Couldn't find application info for packageName=" + packageName + " userId=" + userId); return null; } final ApplicationInfo appInfo = appEntry.info; UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid); IconFactory iconFactory = IconFactory.obtain(context); try { return iconFactory.createBadgedIconBitmap( appInfo.loadUnbadgedIcon(packageManager), new IconOptions().setUser(user)) .newIcon(context); } finally { iconFactory.recycle(); } } private static boolean showApplicationIcon(ApplicationInfo appInfo, PackageManager packageManager) { if (hasFlag(appInfo.flags, FLAG_UPDATED_SYSTEM_APP)) { return packageManager.getLaunchIntentForPackage(appInfo.packageName) != null; return packageManager.getLaunchIntentForPackage(appInfo.packageName) != null; } return !hasFlag(appInfo.flags, FLAG_SYSTEM); } Loading Loading
packages/SystemUI/src/com/android/systemui/toast/SystemUIToast.java +15 −37 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.UserHandle; import android.util.IconDrawableFactory; import android.util.Log; import android.view.LayoutInflater; import android.view.View; Loading @@ -40,10 +41,6 @@ import android.widget.ImageView; import android.widget.TextView; import com.android.internal.R; import com.android.launcher3.icons.BaseIconFactory.IconOptions; import com.android.launcher3.icons.IconFactory; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.systemui.plugins.ToastPlugin; /** Loading Loading @@ -254,48 +251,29 @@ public class SystemUIToast implements ToastPlugin.Toast { return null; } final Context userContext; try { userContext = context.createPackageContextAsUser("android", 0, new UserHandle(userId)); } catch (NameNotFoundException e) { Log.e(TAG, "Could not create user package context"); return null; } final ApplicationsState appState = ApplicationsState.getInstance((Application) context.getApplicationContext()); if (!appState.isUserAdded(userId)) { Log.d(TAG, "user hasn't been fully initialized, not showing an app icon for " + "packageName=" + packageName); final PackageManager packageManager = context.getPackageManager(); final ApplicationInfo appInfo = packageManager.getApplicationInfoAsUser( packageName, PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA), userId); if (appInfo == null || !showApplicationIcon(appInfo, packageManager)) { return null; } final PackageManager packageManager = userContext.getPackageManager(); final AppEntry appEntry = appState.getEntry(packageName, userId); if (appEntry == null || appEntry.info == null || !showApplicationIcon(appEntry.info, packageManager)) { IconDrawableFactory iconFactory = IconDrawableFactory.newInstance(context); return iconFactory.getBadgedIcon(appInfo, UserHandle.getUserId(appInfo.uid)); } catch (NameNotFoundException e) { Log.e(TAG, "Couldn't find application info for packageName=" + packageName + " userId=" + userId); return null; } final ApplicationInfo appInfo = appEntry.info; UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid); IconFactory iconFactory = IconFactory.obtain(context); try { return iconFactory.createBadgedIconBitmap( appInfo.loadUnbadgedIcon(packageManager), new IconOptions().setUser(user)) .newIcon(context); } finally { iconFactory.recycle(); } } private static boolean showApplicationIcon(ApplicationInfo appInfo, PackageManager packageManager) { if (hasFlag(appInfo.flags, FLAG_UPDATED_SYSTEM_APP)) { return packageManager.getLaunchIntentForPackage(appInfo.packageName) != null; return packageManager.getLaunchIntentForPackage(appInfo.packageName) != null; } return !hasFlag(appInfo.flags, FLAG_SYSTEM); } Loading