aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/jni/main.c23
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) {