From d78277c063d43e3234fe80a38d272500f3dfce3a Mon Sep 17 00:00:00 2001 From: JosJuice Date: Mon, 28 Dec 2020 13:25:24 +0100 Subject: Android: Add specialized content provider implementation of DoFileSearch --- Source/Android/jni/AndroidCommon/AndroidCommon.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'Source/Android/jni/AndroidCommon/AndroidCommon.cpp') diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp index 9e57d2764a..b5a5a7faaa 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp @@ -44,6 +44,14 @@ std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array) return result; } +jobjectArray JStringArrayFromVector(JNIEnv* env, std::vector vector) +{ + jobjectArray result = env->NewObjectArray(vector.size(), IDCache::GetStringClass(), nullptr); + for (jsize i = 0; i < vector.size(); ++i) + env->SetObjectArrayElement(result, i, ToJString(env, vector[i])); + return result; +} + bool IsPathAndroidContent(const std::string& uri) { return StringBeginsWith(uri, "content://"); @@ -130,6 +138,17 @@ std::vector GetAndroidContentChildNames(const std::string& uri) return JStringArrayToVector(env, reinterpret_cast(children)); } +std::vector DoFileSearchAndroidContent(const std::string& directory, + const std::vector& extensions, + bool recursive) +{ + JNIEnv* env = IDCache::GetEnvForThread(); + jobject result = env->CallStaticObjectMethod( + IDCache::GetContentHandlerClass(), IDCache::GetContentHandlerDoFileSearch(), + ToJString(env, directory), JStringArrayFromVector(env, extensions), recursive); + return JStringArrayToVector(env, reinterpret_cast(result)); +} + int GetNetworkIpAddress() { JNIEnv* env = IDCache::GetEnvForThread(); -- cgit v1.2.3