diff options
| author | 2016-05-26 17:17:02 -0700 | |
|---|---|---|
| committer | 2016-05-26 17:57:25 -0700 | |
| commit | a8e18ef9110329bc3d3634d02845686de167afd0 (patch) | |
| tree | b4d9816bbed2941e638861552f671266e1afbee7 | |
| parent | 38b5946fae50d4e9e8f32c985983d03a4437910d (diff) | |
Fix spurious crashes in StatusBarIconView
Fixes a crash that happens when we cannot look up a package's
resources for reasons.
Change-Id: I4884536a3eefa8fe82bd274925241f4c798e08e3
Fixes: 28982204
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index bc33b305432e..cdfdad464065 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import android.app.Notification; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Canvas; @@ -25,6 +26,7 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; +import android.os.Parcelable; import android.os.UserHandle; import android.text.TextUtils; import android.util.AttributeSet; @@ -325,8 +327,20 @@ public class StatusBarIconView extends AnimatedImageView { public static String contentDescForNotification(Context c, Notification n) { - Notification.Builder builder = Notification.Builder.recoverBuilder(c, n); - String appName = builder.loadHeaderAppName(); + String appName = ""; + try { + Notification.Builder builder = Notification.Builder.recoverBuilder(c, n); + appName = builder.loadHeaderAppName(); + } catch (RuntimeException e) { + Log.e(TAG, "Unable to recover builder", e); + // Trying to get the app name from the app info instead. + Parcelable appInfo = n.extras.getParcelable( + Notification.EXTRA_BUILDER_APPLICATION_INFO); + if (appInfo instanceof ApplicationInfo) { + appName = String.valueOf(((ApplicationInfo) appInfo).loadLabel( + c.getPackageManager())); + } + } CharSequence title = n.extras.getCharSequence(Notification.EXTRA_TITLE); CharSequence ticker = n.tickerText; |