From 6e1e6d2311df787e800be199df369b5d12aa6cae Mon Sep 17 00:00:00 2001 From: JosJuice Date: Fri, 26 Jun 2020 17:52:31 +0200 Subject: Android: Add content provider support to File::IOFile Taking the hit now to prepare us for when Google Play will force us to use scoped storage... --- Source/Android/jni/AndroidCommon/AndroidCommon.cpp | 18 ++++++++++++++++++ 1 file changed, 18 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 1f9973d451..c8312048e9 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp @@ -11,6 +11,7 @@ #include #include "Common/StringUtil.h" +#include "jni/AndroidCommon/IDCache.h" std::string GetJString(JNIEnv* env, jstring jstr) { @@ -40,3 +41,20 @@ std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array) return result; } + +int OpenAndroidContent(const std::string& uri, const std::string& mode) +{ + JNIEnv* env = IDCache::GetEnvForThread(); + const jint fd = env->CallStaticIntMethod(IDCache::GetContentHandlerClass(), + IDCache::GetContentHandlerOpenFd(), ToJString(env, uri), + ToJString(env, mode)); + + // We can get an IllegalArgumentException when passing an invalid mode + if (env->ExceptionCheck()) + { + env->ExceptionDescribe(); + abort(); + } + + return fd; +} -- cgit v1.2.3 From 3805b84906b7994486c1b13eb49f93b2796a9a11 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 27 Jun 2020 11:04:48 +0200 Subject: Android: Add content provider support to File::Delete --- Source/Android/jni/AndroidCommon/AndroidCommon.cpp | 7 +++++++ 1 file changed, 7 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 c8312048e9..73405b6d8e 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp @@ -58,3 +58,10 @@ int OpenAndroidContent(const std::string& uri, const std::string& mode) return fd; } + +bool DeleteAndroidContent(const std::string& uri) +{ + JNIEnv* env = IDCache::GetEnvForThread(); + return env->CallStaticBooleanMethod(IDCache::GetContentHandlerClass(), + IDCache::GetContentHandlerDelete(), ToJString(env, uri)); +} -- cgit v1.2.3