From aa19010d9fac5e4bc8a12f94b4007ee3c7502e06 Mon Sep 17 00:00:00 2001 From: d34d Date: Tue, 25 Aug 2015 19:13:46 -0700 Subject: Show icon of package associated with Toast For all those times you have some random app or background service that posts a Toast and you have no idea who's posting it. This adds an icon badge to the top left corner of the Toast to show the app's icon the Toast belongs to. Change-Id: I82bf23664eea134f3b1f89ad5a99f6be73906ba8 --- core/java/android/widget/Toast.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'core/java/android/widget') diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java index 207f675..4b31af0 100644 --- a/core/java/android/widget/Toast.java +++ b/core/java/android/widget/Toast.java @@ -21,9 +21,11 @@ import android.annotation.StringRes; import android.app.INotificationManager; import android.app.ITransientNotification; import android.content.Context; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PixelFormat; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; @@ -400,6 +402,18 @@ public class Toast { if (context == null) { context = mView.getContext(); } + + ImageView appIcon = (ImageView) mView.findViewById(android.R.id.icon); + if (appIcon != null) { + PackageManager pm = context.getPackageManager(); + Drawable icon = null; + try { + icon = pm.getApplicationIcon(packageName); + } catch (PackageManager.NameNotFoundException e) { + // nothing to do + } + appIcon.setImageDrawable(icon); + } mWM = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); // We can resolve the Gravity here by using the Locale for getting // the layout direction -- cgit v1.1