#ifndef FLUTTER_FML_PLATFORM_ANDROID_JNI_UTIL_H_
#define FLUTTER_FML_PLATFORM_ANDROID_JNI_UTIL_H_
#include <jni.h>
#include <vector>
#include "flutter/fml/macros.h"
#include "flutter/fml/platform/android/scoped_java_ref.h"
namespace fml {
namespace jni {
void InitJavaVM(JavaVM* vm);
JNIEnv* AttachCurrentThread();
void DetachFromVM();
std::string JavaStringToString(JNIEnv* env, jstring string);
ScopedJavaLocalRef<jstring> StringToJavaString(JNIEnv* env,
const std::string& str);
std::vector<std::string> StringArrayToVector(JNIEnv* env, jobjectArray jargs);
ScopedJavaLocalRef<jobjectArray> VectorToStringArray(
JNIEnv* env,
const std::vector<std::string>& vector);
bool HasException(JNIEnv* env);
bool ClearException(JNIEnv* env);
std::string GetJavaExceptionInfo(JNIEnv* env, jthrowable java_throwable);
}
}
#endif