Merge "Some notification history fixes" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
69d210c7df
@@ -76,7 +76,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="left|center_vertical"
|
android:layout_gravity="left|center_vertical"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:singleLine="true"
|
android:maxLines="3"
|
||||||
android:paddingTop="3dp"
|
android:paddingTop="3dp"
|
||||||
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
|
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
|
||||||
android:textAlignment="viewStart" />
|
android:textAlignment="viewStart" />
|
||||||
|
@@ -125,7 +125,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="left|center_vertical"
|
android:layout_gravity="left|center_vertical"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:singleLine="true"
|
android:maxLines="3"
|
||||||
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
|
android:textAppearance="@style/TextAppearance.NotificationHistory.Text"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
/>
|
/>
|
||||||
|
@@ -140,7 +140,15 @@ public class NotificationHistoryActivity extends Activity {
|
|||||||
|
|
||||||
final NotificationHistoryRecyclerView rv =
|
final NotificationHistoryRecyclerView rv =
|
||||||
viewForPackage.findViewById(R.id.notification_list);
|
viewForPackage.findViewById(R.id.notification_list);
|
||||||
rv.setAdapter(new NotificationHistoryAdapter(mNm, rv));
|
rv.setAdapter(new NotificationHistoryAdapter(mNm, rv,
|
||||||
|
newCount -> {
|
||||||
|
count.setText(getResources().getQuantityString(
|
||||||
|
R.plurals.notification_history_count,
|
||||||
|
newCount, newCount));
|
||||||
|
if (newCount == 0) {
|
||||||
|
viewForPackage.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}));
|
||||||
((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(
|
((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(
|
||||||
new ArrayList<>(nhp.notifications));
|
new ArrayList<>(nhp.notifications));
|
||||||
|
|
||||||
|
@@ -49,13 +49,16 @@ public class NotificationHistoryAdapter extends
|
|||||||
|
|
||||||
private INotificationManager mNm;
|
private INotificationManager mNm;
|
||||||
private List<HistoricalNotification> mValues;
|
private List<HistoricalNotification> mValues;
|
||||||
|
private OnItemDeletedListener mListener;
|
||||||
|
|
||||||
public NotificationHistoryAdapter(INotificationManager nm,
|
public NotificationHistoryAdapter(INotificationManager nm,
|
||||||
NotificationHistoryRecyclerView listView) {
|
NotificationHistoryRecyclerView listView,
|
||||||
|
OnItemDeletedListener listener) {
|
||||||
mValues = new ArrayList<>();
|
mValues = new ArrayList<>();
|
||||||
setHasStableIds(true);
|
setHasStableIds(true);
|
||||||
listView.setOnItemSwipeDeleteListener(this);
|
listView.setOnItemSwipeDeleteListener(this);
|
||||||
mNm = nm;
|
mNm = nm;
|
||||||
|
mListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -134,6 +137,11 @@ public class NotificationHistoryAdapter extends
|
|||||||
Slog.e(TAG, "Failed to delete item", e);
|
Slog.e(TAG, "Failed to delete item", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mListener.onItemDeleted(mValues.size());
|
||||||
notifyItemRemoved(position);
|
notifyItemRemoved(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface OnItemDeletedListener {
|
||||||
|
void onItemDeleted(int newCount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,12 +20,16 @@ import static android.app.Notification.COLOR_DEFAULT;
|
|||||||
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
||||||
import static android.content.pm.PackageManager.NameNotFoundException;
|
import static android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import static android.os.UserHandle.USER_ALL;
|
import static android.os.UserHandle.USER_ALL;
|
||||||
|
import static android.provider.Settings.EXTRA_APP_PACKAGE;
|
||||||
|
import static android.provider.Settings.EXTRA_CHANNEL_ID;
|
||||||
|
import static android.provider.Settings.EXTRA_CONVERSATION_ID;
|
||||||
|
|
||||||
import android.annotation.ColorInt;
|
import android.annotation.ColorInt;
|
||||||
import android.annotation.UserIdInt;
|
import android.annotation.UserIdInt;
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
@@ -33,6 +37,7 @@ import android.graphics.PorterDuff;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.service.notification.StatusBarNotification;
|
import android.service.notification.StatusBarNotification;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -113,6 +118,15 @@ public class NotificationSbnAdapter extends
|
|||||||
holder.setProfileBadge(mUserBadgeCache.get(userId));
|
holder.setProfileBadge(mUserBadgeCache.get(userId));
|
||||||
holder.addOnClick(sbn.getPackageName(), sbn.getUserId(),
|
holder.addOnClick(sbn.getPackageName(), sbn.getUserId(),
|
||||||
sbn.getNotification().contentIntent);
|
sbn.getNotification().contentIntent);
|
||||||
|
holder.itemView.setOnLongClickListener(v -> {
|
||||||
|
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
|
||||||
|
.putExtra(EXTRA_APP_PACKAGE, sbn.getPackageName())
|
||||||
|
.putExtra(EXTRA_CHANNEL_ID, sbn.getNotification().getChannelId())
|
||||||
|
.putExtra(EXTRA_CONVERSATION_ID, sbn.getNotification().getShortcutId());
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
holder.itemView.getContext().startActivityAsUser(intent, UserHandle.of(userId));
|
||||||
|
return true;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
Slog.w(TAG, "null entry in list at position " + position);
|
Slog.w(TAG, "null entry in list at position " + position);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user