main.c: support URI opening over DBus

This commit is contained in:
Julian Winkler
2025-07-23 16:43:58 +02:00
parent e5a6ef7251
commit 7366475172

View File

@@ -270,6 +270,19 @@ static void open(GtkApplication *app, GFile **files, gint nfiles, const gchar *h
printf(">- [%s]\n", g_file_get_path(files[i])); printf(">- [%s]\n", g_file_get_path(files[i]));
} }
*/ */
if (window) { // this is not the first launch, but a DBus request to open an URI in the running app
printf("opening uri over DBus %p\n", files[0]);
char *uri = g_file_get_uri(files[0]);
JNIEnv *env = get_jni_env();
printf("opening uri over DBus: %s\n", uri);
jobject activity = (*env)->CallStaticObjectMethod(env, handle_cache.activity.class,
_STATIC_METHOD(handle_cache.activity.class, "createMainActivity", "(Ljava/lang/String;JLjava/lang/String;)Landroid/app/Activity;"),
_JSTRING(d->apk_main_activity_class), _INTPTR(window), _JSTRING(uri));
if ((*env)->ExceptionCheck(env))
(*env)->ExceptionDescribe(env);
activity_start(env, activity);
return;
}
char *dex_install_dir; char *dex_install_dir;
char *api_impl_jar; char *api_impl_jar;
char *test_runner_jar = NULL; char *test_runner_jar = NULL;
@@ -653,6 +666,7 @@ static void open(GtkApplication *app, GFile **files, gint nfiles, const gchar *h
GString *desktop_entry = g_string_new("[Desktop Entry]\n" GString *desktop_entry = g_string_new("[Desktop Entry]\n"
"Type=Application\n" "Type=Application\n"
"DBusActivatable=true\n"
"Exec=env "); "Exec=env ");
if (getenv("RUN_FROM_BUILDDIR")) { if (getenv("RUN_FROM_BUILDDIR")) {
printf("WARNING: RUN_FROM_BUILDDIR set and --install given: using current directory in desktop entry\n"); printf("WARNING: RUN_FROM_BUILDDIR set and --install given: using current directory in desktop entry\n");