diff options
| author | Arslaan Pathan <[email protected]> | 2026-08-16 21:07:41 +1200 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-08-16 21:07:41 +1200 |
| commit | 138561e95059b1924437a1dccc2a9c30c05f59f5 (patch) | |
| tree | c87e150b59dfed6eedd9b1c9b96b6919e81322e6 /app | |
| parent | 31a371d3a76f80df501210b1b3ea59b86cfecbf1 (diff) | |
| download | moku-assistant-138561e95059b1924437a1dccc2a9c30c05f59f5.tar.xz moku-assistant-138561e95059b1924437a1dccc2a9c30c05f59f5.zip | |
[fix] request notif permission before starting service
Diffstat (limited to 'app')
| -rw-r--r-- | app/src/main/jni/main.c | 23 |
1 files changed, 23 insertions, 0 deletions
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) { |
