blob: 0fb2be7c2fa4f4c1d5d7e92e46942b95b24b1d67 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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);
// Returns a JNI environment for the current thread.
// Attaches the thread to JNI if needed.
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);
std::vector<std::string> StringListToVector(JNIEnv* env, jobject list);
ScopedJavaLocalRef<jobjectArray> VectorToStringArray(
JNIEnv* env,
const std::vector<std::string>& vector);
ScopedJavaLocalRef<jobjectArray> VectorToBufferArray(
JNIEnv* env,
const std::vector<std::vector<uint8_t>>& vector);
bool HasException(JNIEnv* env);
bool ClearException(JNIEnv* env);
bool CheckException(JNIEnv* env);
std::string GetJavaExceptionInfo(JNIEnv* env, jthrowable java_throwable);
} // namespace jni
} // namespace fml
#endif // FLUTTER_FML_PLATFORM_ANDROID_JNI_UTIL_H_