mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-30 05:37:43 +00:00
Notifications plugin now uses notifications' "key"s as id.
Instead of our custom packageName + tag + scoped id.
This commit is contained in:
parent
a15b06cdc7
commit
403c18a056
@ -73,57 +73,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
|||||||
return (notificationListenerList != null && notificationListenerList.contains(context.getPackageName()));
|
return (notificationListenerList != null && notificationListenerList.contains(context.getPackageName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static class NotificationId {
|
|
||||||
String packageName;
|
|
||||||
String tag;
|
|
||||||
int id;
|
|
||||||
|
|
||||||
public static NotificationId fromNotification(StatusBarNotification statusBarNotification) {
|
|
||||||
NotificationId nid = new NotificationId();
|
|
||||||
nid.packageName = statusBarNotification.getPackageName();
|
|
||||||
nid.tag = statusBarNotification.getTag();
|
|
||||||
nid.id = statusBarNotification.getId();
|
|
||||||
return nid;
|
|
||||||
}
|
|
||||||
public static NotificationId unserialize(String s) {
|
|
||||||
NotificationId nid = new NotificationId();
|
|
||||||
int first = s.indexOf(':');
|
|
||||||
int last = s.lastIndexOf(':');
|
|
||||||
nid.packageName = s.substring(0, first);
|
|
||||||
nid.tag = s.substring(first+1, last);
|
|
||||||
if (nid.tag.length() == 0) nid.tag = null;
|
|
||||||
String idString = s.substring(last+1);
|
|
||||||
try {
|
|
||||||
nid.id = Integer.parseInt(idString);
|
|
||||||
} catch(Exception e) {
|
|
||||||
nid.id = 0;
|
|
||||||
}
|
|
||||||
//Log.e("NotificationId","unserialize: " + nid.packageName+ ", "+nid.tag+ ", "+nid.id);
|
|
||||||
return nid;
|
|
||||||
}
|
|
||||||
public String serialize() {
|
|
||||||
//Log.e("NotificationId","serialize: " + packageName+ ", "+tag+ ", "+id);
|
|
||||||
String safePackageName = (packageName == null)? "" : packageName;
|
|
||||||
String safeTag = (tag == null)? "" : tag;
|
|
||||||
return safePackageName+":"+safeTag+":"+id;
|
|
||||||
}
|
|
||||||
public String getPackageName() {
|
|
||||||
return packageName;
|
|
||||||
}
|
|
||||||
public String getTag() {
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
public int getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (!(o instanceof NotificationId)) return false;
|
|
||||||
NotificationId other = (NotificationId)o;
|
|
||||||
return other.getTag().equals(tag) && other.getId() == id && other.getPackageName().equals(packageName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreate() {
|
public boolean onCreate() {
|
||||||
|
|
||||||
@ -172,10 +121,9 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNotificationRemoved(StatusBarNotification statusBarNotification) {
|
public void onNotificationRemoved(StatusBarNotification statusBarNotification) {
|
||||||
NotificationId id = NotificationId.fromNotification(statusBarNotification);
|
String id = statusBarNotification.getKey();
|
||||||
|
|
||||||
NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_NOTIFICATION);
|
NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_NOTIFICATION);
|
||||||
np.set("id", id.serialize());
|
np.set("id", id);
|
||||||
np.set("isCancel", true);
|
np.set("isCancel", true);
|
||||||
device.sendPackage(np);
|
device.sendPackage(np);
|
||||||
}
|
}
|
||||||
@ -204,11 +152,11 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
|||||||
}
|
}
|
||||||
appDatabase.close();
|
appDatabase.close();
|
||||||
|
|
||||||
NotificationId id = NotificationId.fromNotification(statusBarNotification);
|
String id = statusBarNotification.getKey();
|
||||||
String packageName = statusBarNotification.getPackageName();
|
String packageName = statusBarNotification.getPackageName();
|
||||||
String appName = AppsHelper.appNameLookup(context, packageName);
|
String appName = AppsHelper.appNameLookup(context, packageName);
|
||||||
|
|
||||||
if (id.serialize().equals("com.facebook.orca::10012") && notification.tickerText == null && appName.equals("Messenger")) {
|
if ("com.facebook.orca".equals(packageName) && "10012".equals(statusBarNotification.getId()) && appName.equals("Messenger") && notification.tickerText == null) {
|
||||||
//HACK: Hide weird Facebook empty "Messenger" notification that is actually not shown in the phone
|
//HACK: Hide weird Facebook empty "Messenger" notification that is actually not shown in the phone
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -244,7 +192,7 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
np.set("id", id.serialize());
|
np.set("id", id);
|
||||||
np.set("appName", appName == null? packageName : appName);
|
np.set("appName", appName == null? packageName : appName);
|
||||||
np.set("isClearable", statusBarNotification.isClearable());
|
np.set("isClearable", statusBarNotification.isClearable());
|
||||||
np.set("ticker", getTickerText(notification));
|
np.set("ticker", getTickerText(notification));
|
||||||
@ -347,9 +295,8 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
|||||||
NotificationReceiver.RunCommand(context, new NotificationReceiver.InstanceCallback() {
|
NotificationReceiver.RunCommand(context, new NotificationReceiver.InstanceCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onServiceStart(NotificationReceiver service) {
|
public void onServiceStart(NotificationReceiver service) {
|
||||||
|
String dismissedId = np.getString("cancel");
|
||||||
NotificationId dismissedId = NotificationId.unserialize(np.getString("cancel"));
|
service.cancelNotification(dismissedId);
|
||||||
service.cancelNotification(dismissedId.getPackageName(), dismissedId.getTag(), dismissedId.getId());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user