| // 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_ |