diff options
Diffstat (limited to 'platform/android/src/conversion')
-rw-r--r-- | platform/android/src/conversion/collection.cpp | 15 | ||||
-rw-r--r-- | platform/android/src/conversion/collection.hpp | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/platform/android/src/conversion/collection.cpp b/platform/android/src/conversion/collection.cpp index 27b614e8cd..6775228e15 100644 --- a/platform/android/src/conversion/collection.cpp +++ b/platform/android/src/conversion/collection.cpp @@ -19,6 +19,21 @@ std::vector<std::string> toVector(JNIEnv& env, jni::Array<jni::String> array) { return vector; } +jni::Array<jni::String> toArray(JNIEnv& env, const std::vector<std::string>& vector) { + static auto clazz = *jni::Class<jni::StringTag>::Find(env).NewGlobalRef(env).release(); + auto result = jni::Array<jni::String>::New(env, vector.size(), clazz); + + std::size_t index = 0; + for (auto&& item : vector) { + auto element = jni::Make<jni::String>(env, item); + result.Set(env, index, element); + DeleteLocalRef(env, element); + index++; + } + + return result; +} + } } } diff --git a/platform/android/src/conversion/collection.hpp b/platform/android/src/conversion/collection.hpp index bb8941c984..c6b08370ee 100644 --- a/platform/android/src/conversion/collection.hpp +++ b/platform/android/src/conversion/collection.hpp @@ -11,6 +11,7 @@ namespace android { namespace conversion { std::vector<std::string> toVector(JNIEnv& env, jni::Array<jni::String> array); +jni::Array<jni::String> toArray(JNIEnv& env, const std::vector<std::string>&); } } |