Android NotificationListenerService:如何知道用户是点击了通知(打开相关应用程序)还是简单地删除了它
Android NotificationListenerService: how to know if user clicked on the notification (opening the related app) or simply deleted it
我正在处理我的 Android 设备 (android 5.1.1) 上每个应用程序(不仅是我的应用程序)生成的通知。
通过扩展 NotificationListenerService,我能够知道何时发布推送通知(覆盖 "onNotificationPosted" 方法)以及何时删除通知(覆盖 "onNotificationRemoved" 方法)。
问题是我想知道通知是如何被删除的:
a)点击它(打开应用程序)
要么
b)通过滑动它(所以它只是被删除)
?
有可能知道吗?
提前致谢!
最好的方法是获取所有 运行 进程的列表!
所以,在 onNotificationRemoved 方法中我们可以:
1.使用Android Processes库获取运行进程列表
2.将每个进程名称与packageName进行比较
3.如果比较return为真值,我们检查进程是否在前台
public void onNotificationRemoved(StatusBarNotification sbn) {
String packageName = sbn.getPackageName();
try {
List<AndroidAppProcess> processes = ProcessManager.getRunningAppProcesses();
if (processes != null) {
for (AndroidAppProcess process : processes) {
String processName = process.name;
if (processName.equals(packageName)) {
if (process.foreground ==true)
{
//user clicked on notification
}
else
{
//user swipe notification
}
}
}
}
}
catch (Exception e)
{
String error = e.toString();
}
}
我正在处理我的 Android 设备 (android 5.1.1) 上每个应用程序(不仅是我的应用程序)生成的通知。 通过扩展 NotificationListenerService,我能够知道何时发布推送通知(覆盖 "onNotificationPosted" 方法)以及何时删除通知(覆盖 "onNotificationRemoved" 方法)。
问题是我想知道通知是如何被删除的: a)点击它(打开应用程序) 要么 b)通过滑动它(所以它只是被删除) ?
有可能知道吗? 提前致谢!
最好的方法是获取所有 运行 进程的列表! 所以,在 onNotificationRemoved 方法中我们可以: 1.使用Android Processes库获取运行进程列表 2.将每个进程名称与packageName进行比较 3.如果比较return为真值,我们检查进程是否在前台
public void onNotificationRemoved(StatusBarNotification sbn) {
String packageName = sbn.getPackageName();
try {
List<AndroidAppProcess> processes = ProcessManager.getRunningAppProcesses();
if (processes != null) {
for (AndroidAppProcess process : processes) {
String processName = process.name;
if (processName.equals(packageName)) {
if (process.foreground ==true)
{
//user clicked on notification
}
else
{
//user swipe notification
}
}
}
}
}
catch (Exception e)
{
String error = e.toString();
}
}