From 138561e95059b1924437a1dccc2a9c30c05f59f5 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sun, 16 Aug 2026 21:07:41 +1200 Subject: [fix] request notif permission before starting service --- app/src/main/jni/main.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'app') diff --git a/app/src/main/jni/main.c b/app/src/main/jni/main.c index 71d0f62..0afa0cd 100644 --- a/app/src/main/jni/main.c +++ b/app/src/main/jni/main.c @@ -36,6 +36,28 @@ JNIEXPORT void JNICALL Java_com_arslaancodes_mokuassistant_AssistantService_stop LOGI("stopAssistant called"); } +void request_notification_permission(struct android_app *app) { + JNIEnv *env; + JavaVM *jvm = app->activity->vm; + + (*jvm)->AttachCurrentThread(jvm, &env, NULL); + + jclass activity_class = (*env)->GetObjectClass(env, app->activity->clazz); + jmethodID request_permissions = (*env)->GetMethodID(env, activity_class, "requestPermissions", "([Ljava/lang/String;I)V"); + + jstring perm_string = (*env)->NewStringUTF(env, "android.permission.POST_NOTIFICATIONS"); + jobjectArray perm_array = (*env)->NewObjectArray(env, 1, (*env)->FindClass(env, "java/lang/String"), perm_string); + + (*env)->CallVoidMethod(env, app->activity->clazz, request_permissions, perm_array, 0); + + (*env)->DeleteLocalRef(env, perm_string); + (*env)->DeleteLocalRef(env, perm_array); + + (*jvm)->DetachCurrentThread(jvm); + + LOGI("Notification permission requested"); +} + void start_assistant_service(struct android_app *app) { JNIEnv *env; JavaVM *jvm = app->activity->vm; @@ -252,6 +274,7 @@ void android_main(struct android_app *state) { state->userData = engine; state->onAppCmd = engine_handle_cmd; + request_notification_permission(state); start_assistant_service(state); while (!state->destroyRequested) { -- cgit v1.2.3