Fix CharSequence nonsense in NotificationStation.

Also clean up the lifecycle so we unbind and rebind on pause
and resume, instead of create and destroy.

Bug: 27389947
Change-Id: I2b7b7934a25a6bd528b9d399ffed487ea724b30b
This commit is contained in:
Dan Sandler
2016-02-29 22:29:10 -05:00
parent 24264eb250
commit 8b797c2df8

View File

@@ -87,7 +87,7 @@ public class NotificationStation extends SettingsPreferenceFragment {
} }
}; };
private NotificationListenerService mListener = new NotificationListenerService() { private final NotificationListenerService mListener = new NotificationListenerService() {
@Override @Override
public void onNotificationPosted(StatusBarNotification sbn, RankingMap ranking) { public void onNotificationPosted(StatusBarNotification sbn, RankingMap ranking) {
logd("onNotificationPosted: %s", sbn.getNotification()); logd("onNotificationPosted: %s", sbn.getNotification());
@@ -130,22 +130,16 @@ public class NotificationStation extends SettingsPreferenceFragment {
mPm = mContext.getPackageManager(); mPm = mContext.getPackageManager();
mNoMan = INotificationManager.Stub.asInterface( mNoMan = INotificationManager.Stub.asInterface(
ServiceManager.getService(Context.NOTIFICATION_SERVICE)); ServiceManager.getService(Context.NOTIFICATION_SERVICE));
try {
mListener.registerAsSystemService(mContext, new ComponentName(mContext.getPackageName(),
this.getClass().getCanonicalName()), ActivityManager.getCurrentUser());
} catch (RemoteException e) {
Log.e(TAG, "Cannot register listener", e);
}
} }
@Override @Override
public void onDetach() { public void onPause() {
try { try {
mListener.unregisterAsSystemService(); mListener.unregisterAsSystemService();
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Cannot unregister listener", e); Log.e(TAG, "Cannot unregister listener", e);
} }
super.onDetach(); super.onPause();
} }
@Override @Override
@@ -166,6 +160,12 @@ public class NotificationStation extends SettingsPreferenceFragment {
public void onResume() { public void onResume() {
logd("onResume()"); logd("onResume()");
super.onResume(); super.onResume();
try {
mListener.registerAsSystemService(mContext, new ComponentName(mContext.getPackageName(),
this.getClass().getCanonicalName()), ActivityManager.getCurrentUser());
} catch (RemoteException e) {
Log.e(TAG, "Cannot register listener", e);
}
refreshList(); refreshList();
} }
@@ -200,17 +200,17 @@ public class NotificationStation extends SettingsPreferenceFragment {
} }
private static String getTitleString(Notification n) { private static String getTitleString(Notification n) {
String title = null; CharSequence title = null;
if (n.extras != null) { if (n.extras != null) {
title = n.extras.getString(Notification.EXTRA_TITLE); title = n.extras.getCharSequence(Notification.EXTRA_TITLE);
if (TextUtils.isEmpty(title)) { if (TextUtils.isEmpty(title)) {
title = n.extras.getString(Notification.EXTRA_TEXT); title = n.extras.getCharSequence(Notification.EXTRA_TEXT);
} }
} }
if (TextUtils.isEmpty(title) && !TextUtils.isEmpty(n.tickerText)) { if (TextUtils.isEmpty(title) && !TextUtils.isEmpty(n.tickerText)) {
title = n.tickerText.toString(); title = n.tickerText;
} }
return title; return String.valueOf(title);
} }
private static String formatPendingIntent(PendingIntent pi) { private static String formatPendingIntent(PendingIntent pi) {