Files
armorpaint/base/sources/backends/android_http_request.c
T

29 lines
1.3 KiB
C
Raw Normal View History

2024-11-10 22:11:29 +01:00
#include "android_http_request.h"
2025-02-26 08:47:09 +01:00
#include <iron_system.h>
2024-11-10 22:11:29 +01:00
#include <jni.h>
#include <string.h>
#include <android_native_app_glue.h>
2025-03-09 17:02:12 +01:00
ANativeActivity *iron_android_get_activity(void);
jclass iron_android_find_class(JNIEnv *env, const char *name);
2024-11-10 22:11:29 +01:00
void android_http_request(const char *url, const char *path, const char *data, int port, bool secure, int method, const char *header,
2025-03-09 17:02:12 +01:00
iron_http_callback_t callback, void *callbackdata) {
ANativeActivity *activity = iron_android_get_activity();
2024-11-10 22:11:29 +01:00
JNIEnv *env;
2025-03-09 17:02:12 +01:00
JavaVM *vm = iron_android_get_activity()->vm;
2024-11-10 22:11:29 +01:00
(*vm)->AttachCurrentThread(vm, &env, NULL);
2025-03-09 17:02:12 +01:00
jclass activityClass = iron_android_find_class(env, "arm.AndroidHttpRequest");
2024-11-10 22:11:29 +01:00
jstring jstr = (*env)->NewStringUTF(env, url);
jbyteArray bytes_array = (jbyteArray)((*env)->CallStaticObjectMethod(env, activityClass, (*env)->GetStaticMethodID(env, activityClass, "androidHttpRequest", "(Ljava/lang/String;)[B"), jstr));
jsize num_bytes = (*env)->GetArrayLength(env, bytes_array);
jbyte *elements = (*env)->GetByteArrayElements(env, bytes_array, NULL);
if (elements != NULL) {
callback(0, 200, (char *)elements, callbackdata);
// (*env)->ReleaseByteArrayElements(env, bytes_array, elements, JNI_ABORT);
}
(*vm)->DetachCurrentThread(vm);
}