You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
NoitficationManager: implement cancel
This commit is contained in:
@@ -117,6 +117,14 @@ JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeShowNotificati
|
|||||||
g_hash_table_add(ongoing_notifications, GINT_TO_POINTER(id));
|
g_hash_table_add(ongoing_notifications, GINT_TO_POINTER(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeCancel(JNIEnv *env, jobject this, jint id)
|
||||||
|
{
|
||||||
|
char *id_string = g_strdup_printf("%d", id);
|
||||||
|
if (portal)
|
||||||
|
xdp_portal_remove_notification(portal, id_string);
|
||||||
|
g_free(id_string);
|
||||||
|
}
|
||||||
|
|
||||||
static void remove_ongoing_notification(gpointer key, gpointer value, gpointer user_data)
|
static void remove_ongoing_notification(gpointer key, gpointer value, gpointer user_data)
|
||||||
{
|
{
|
||||||
char *id_string = g_strdup_printf("%d", GPOINTER_TO_INT(key));
|
char *id_string = g_strdup_printf("%d", GPOINTER_TO_INT(key));
|
||||||
|
|||||||
@@ -31,6 +31,14 @@ JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeAddAction
|
|||||||
JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeShowNotification
|
JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeShowNotification
|
||||||
(JNIEnv *, jobject, jlong, jint, jstring, jstring, jstring, jboolean, jint, jstring, jstring);
|
(JNIEnv *, jobject, jlong, jint, jstring, jstring, jstring, jboolean, jint, jstring, jstring);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: android_app_NotificationManager
|
||||||
|
* Method: nativeCancel
|
||||||
|
* Signature: (I)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_android_app_NotificationManager_nativeCancel
|
||||||
|
(JNIEnv *, jobject, jint);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package android.app;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Handler;
|
||||||
|
|
||||||
public class NotificationManager {
|
public class NotificationManager {
|
||||||
public void cancelAll() {}
|
public void cancelAll() {}
|
||||||
@@ -36,7 +37,20 @@ public class NotificationManager {
|
|||||||
notify(null, id, notification);
|
notify(null, id, notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancel(String tag, int id) {}
|
public void cancel(String tag, final int id) {
|
||||||
|
// remove_notification doesn't work reliably when sent directly after add_notification in GNOME session.
|
||||||
|
// So we give some extra delay here.
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
nativeCancel(id);
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cancel(int id) {
|
||||||
|
cancel(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
protected static void notificationActionCallback(int id, int intentType, String action, String className) {
|
protected static void notificationActionCallback(int id, int intentType, String action, String className) {
|
||||||
Context context = Context.this_application;
|
Context context = Context.this_application;
|
||||||
@@ -56,4 +70,5 @@ public class NotificationManager {
|
|||||||
protected native long nativeInitBuilder();
|
protected native long nativeInitBuilder();
|
||||||
protected native void nativeAddAction(long builder, String title, int intentType, String action, String className);
|
protected native void nativeAddAction(long builder, String title, int intentType, String action, String className);
|
||||||
protected native void nativeShowNotification(long builder, int id, String title, String text, String iconPath, boolean ongoing, int intentType, String action, String className);
|
protected native void nativeShowNotification(long builder, int id, String title, String text, String iconPath, boolean ongoing, int intentType, String action, String className);
|
||||||
|
protected native void nativeCancel(int id);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user