Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -8093,6 +8093,9 @@ <!-- Notification history screen; content description describing what happens when you tap on a notification history entry [CHAR LIMIT=NONE] --> <string name="notification_history_view_settings">view notification settings</string> <!-- Notification history screen; content description describing what happens when you tap on a snoozed or recently dismissed notification [CHAR LIMIT=NONE] --> <string name="notification_history_open_notification">open notification</string> <!-- Configure Notifications: setting title, whether the snooze menu is shown on notifications [CHAR LIMIT=80] --> <string name="snooze_options_title">Allow notification snoozing</string> src/com/android/settings/notification/history/NotificationSbnAdapter.java +4 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.app.Notification.COLOR_DEFAULT; import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.NameNotFoundException; import static android.os.UserHandle.USER_ALL; import static android.os.UserHandle.USER_CURRENT; import android.annotation.ColorInt; import android.annotation.UserIdInt; Loading Loading @@ -48,7 +47,6 @@ import com.android.internal.util.ContrastColorUtil; import com.android.settings.R; import java.util.ArrayList; import java.util.Currency; import java.util.HashMap; import java.util.List; import java.util.Map; Loading Loading @@ -92,7 +90,7 @@ public class NotificationSbnAdapter extends final StatusBarNotification sbn = mValues.get(position); if (sbn != null) { holder.setIcon(loadIcon(sbn)); holder.setPackageName(loadPackageName(sbn.getPackageName()).toString()); holder.setPackageLabel(loadPackageLabel(sbn.getPackageName()).toString()); holder.setTitle(getTitleString(sbn.getNotification())); holder.setSummary(getTextString(mContext, sbn.getNotification())); holder.setPostedTime(sbn.getPostTime()); Loading @@ -103,6 +101,8 @@ public class NotificationSbnAdapter extends mUserBadgeCache.put(userId, profile); } holder.setProfileBadge(mUserBadgeCache.get(userId)); holder.addOnClick(sbn.getPackageName(), sbn.getUserId(), sbn.getNotification().contentIntent); } else { Slog.w(TAG, "null entry in list at position " + position); } Loading Loading @@ -133,7 +133,7 @@ public class NotificationSbnAdapter extends notifyDataSetChanged(); } private @NonNull CharSequence loadPackageName(String pkg) { private @NonNull CharSequence loadPackageLabel(String pkg) { try { ApplicationInfo info = mPm.getApplicationInfo(pkg, MATCH_ANY_USER); Loading src/com/android/settings/notification/history/NotificationSbnViewHolder.java +39 −2 Original line number Diff line number Diff line Loading @@ -16,19 +16,26 @@ package com.android.settings.notification.history; import android.app.PendingIntent; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.UserHandle; import android.text.TextUtils; import android.util.Slog; import android.view.View; import android.widget.DateTimeView; import android.widget.ImageView; import android.widget.TextView; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.ViewCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { private static final String TAG = "SbnViewHolder"; private final TextView mPkgName; private final ImageView mIcon; Loading Loading @@ -63,7 +70,7 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { mIcon.setImageDrawable(icon); } void setPackageName(String pkg) { void setPackageLabel(String pkg) { mPkgName.setText(pkg); } Loading @@ -74,4 +81,34 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { void setProfileBadge(Drawable badge) { mProfileBadge.setImageDrawable(badge); } void addOnClick(String pkg, int userId, PendingIntent pi) { itemView.setOnClickListener(v -> { if (pi != null) { try { pi.send(); } catch (PendingIntent.CanceledException e) { Slog.e(TAG, "Could not launch", e); } } else { Intent appIntent = new Intent(Intent.ACTION_MAIN) .setPackage(pkg); appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); itemView.getContext().startActivityAsUser(appIntent, UserHandle.of(userId)); } }); ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { super.onInitializeAccessibilityNodeInfo(host, info); CharSequence description = host.getResources().getText( R.string.notification_history_open_notification); AccessibilityNodeInfoCompat.AccessibilityActionCompat customClick = new AccessibilityNodeInfoCompat.AccessibilityActionCompat( AccessibilityNodeInfoCompat.ACTION_CLICK, description); info.addAction(customClick); } }); } } Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -8093,6 +8093,9 @@ <!-- Notification history screen; content description describing what happens when you tap on a notification history entry [CHAR LIMIT=NONE] --> <string name="notification_history_view_settings">view notification settings</string> <!-- Notification history screen; content description describing what happens when you tap on a snoozed or recently dismissed notification [CHAR LIMIT=NONE] --> <string name="notification_history_open_notification">open notification</string> <!-- Configure Notifications: setting title, whether the snooze menu is shown on notifications [CHAR LIMIT=80] --> <string name="snooze_options_title">Allow notification snoozing</string>
src/com/android/settings/notification/history/NotificationSbnAdapter.java +4 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.app.Notification.COLOR_DEFAULT; import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.NameNotFoundException; import static android.os.UserHandle.USER_ALL; import static android.os.UserHandle.USER_CURRENT; import android.annotation.ColorInt; import android.annotation.UserIdInt; Loading Loading @@ -48,7 +47,6 @@ import com.android.internal.util.ContrastColorUtil; import com.android.settings.R; import java.util.ArrayList; import java.util.Currency; import java.util.HashMap; import java.util.List; import java.util.Map; Loading Loading @@ -92,7 +90,7 @@ public class NotificationSbnAdapter extends final StatusBarNotification sbn = mValues.get(position); if (sbn != null) { holder.setIcon(loadIcon(sbn)); holder.setPackageName(loadPackageName(sbn.getPackageName()).toString()); holder.setPackageLabel(loadPackageLabel(sbn.getPackageName()).toString()); holder.setTitle(getTitleString(sbn.getNotification())); holder.setSummary(getTextString(mContext, sbn.getNotification())); holder.setPostedTime(sbn.getPostTime()); Loading @@ -103,6 +101,8 @@ public class NotificationSbnAdapter extends mUserBadgeCache.put(userId, profile); } holder.setProfileBadge(mUserBadgeCache.get(userId)); holder.addOnClick(sbn.getPackageName(), sbn.getUserId(), sbn.getNotification().contentIntent); } else { Slog.w(TAG, "null entry in list at position " + position); } Loading Loading @@ -133,7 +133,7 @@ public class NotificationSbnAdapter extends notifyDataSetChanged(); } private @NonNull CharSequence loadPackageName(String pkg) { private @NonNull CharSequence loadPackageLabel(String pkg) { try { ApplicationInfo info = mPm.getApplicationInfo(pkg, MATCH_ANY_USER); Loading
src/com/android/settings/notification/history/NotificationSbnViewHolder.java +39 −2 Original line number Diff line number Diff line Loading @@ -16,19 +16,26 @@ package com.android.settings.notification.history; import android.app.PendingIntent; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.UserHandle; import android.text.TextUtils; import android.util.Slog; import android.view.View; import android.widget.DateTimeView; import android.widget.ImageView; import android.widget.TextView; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.ViewCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { private static final String TAG = "SbnViewHolder"; private final TextView mPkgName; private final ImageView mIcon; Loading Loading @@ -63,7 +70,7 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { mIcon.setImageDrawable(icon); } void setPackageName(String pkg) { void setPackageLabel(String pkg) { mPkgName.setText(pkg); } Loading @@ -74,4 +81,34 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { void setProfileBadge(Drawable badge) { mProfileBadge.setImageDrawable(badge); } void addOnClick(String pkg, int userId, PendingIntent pi) { itemView.setOnClickListener(v -> { if (pi != null) { try { pi.send(); } catch (PendingIntent.CanceledException e) { Slog.e(TAG, "Could not launch", e); } } else { Intent appIntent = new Intent(Intent.ACTION_MAIN) .setPackage(pkg); appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); itemView.getContext().startActivityAsUser(appIntent, UserHandle.of(userId)); } }); ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { super.onInitializeAccessibilityNodeInfo(host, info); CharSequence description = host.getResources().getText( R.string.notification_history_open_notification); AccessibilityNodeInfoCompat.AccessibilityActionCompat customClick = new AccessibilityNodeInfoCompat.AccessibilityActionCompat( AccessibilityNodeInfoCompat.ACTION_CLICK, description); info.addAction(customClick); } }); } }