on decrease-android-validity help sign in
42 lines 1.2 kB history raw
1#include <assert.h>
2#include <jni.h>
3#include <android/asset_manager.h>
4#include <android/asset_manager_jni.h>
5#include <HaskellActivity.h>
7static JNIEnv *getEnv() {
9 JNIEnv *env;
10 jint attachResult = (*HaskellActivity_jvm)->AttachCurrentThread(HaskellActivity_jvm, &env, NULL);
11 assert(attachResult == JNI_OK);
13 return env;
16jobject ExecutableConfig_getAssets() {
17 JNIEnv *env = getEnv();
19 jobject haskellActivity = HaskellActivity_get();
20 jclass cls = (*env)->GetObjectClass(env, haskellActivity);
21 jmethodID getAssets = (*env)->GetMethodID(env, cls, "getAssets", "()Landroid/content/res/AssetManager;");
22 assert(getAssets);
24 jobject assetManagerObj = (*env)->CallObjectMethod(env, haskellActivity, getAssets);
25 assert(assetManagerObj);
27 jobject assetManagerObjRef = (*env)->NewGlobalRef(env, assetManagerObj);
29 (*env)->DeleteLocalRef(env, assetManagerObj);
31 return assetManagerObjRef;
34AAssetManager *ExecutableConfig_aassetManagerFromJava(jobject assetManagerObjRef) {
35 JNIEnv *env = getEnv();
36 return AAssetManager_fromJava(env, assetManagerObjRef);
39void ExecutableConfig_freeAssetManager(jobject assetManagerObjRef) {
40 JNIEnv *env = getEnv();
41 (*env)->DeleteGlobalRef(env, assetManagerObjRef);