From a5d459fe3fcbe00435665dafc9bec47d6b8a2919 Mon Sep 17 00:00:00 2001 From: cebgcontract <99630598+cebgcontract@users.noreply.github.com> Date: Tue, 20 Dec 2022 12:46:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=86=85=E5=A4=96storage?= =?UTF-8?q?=E7=9A=84=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cocos/platform/CCFileUtils.h | 2 ++ .../platform/android/CCFileUtils-android.cpp | 19 +++++++++++++++++++ cocos/platform/android/CCFileUtils-android.h | 1 + .../src/org/cocos2dx/lib/Cocos2dxHelper.java | 8 ++++++-- .../js-bindings/manual/jsb_global.cpp | 4 ++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/cocos/platform/CCFileUtils.h b/cocos/platform/CCFileUtils.h index 41ec113..b3d4c28 100644 --- a/cocos/platform/CCFileUtils.h +++ b/cocos/platform/CCFileUtils.h @@ -459,6 +459,8 @@ public: */ virtual std::string getWritablePath() const = 0; + virtual std::string getExtFileDirectory() const = 0; + /** * Sets writable path. */ diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index c571454..6941fb8 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -328,6 +328,25 @@ std::string FileUtilsAndroid::getWritablePath() const } } +std::string FileUtilsAndroid::getExtFileDirectory() const +{ + // Fix for Nexus 10 (Android 4.2 multi-user environment) + // the path is retrieved through Java Context.getCacheDir() method + std::string dir(""); + std::string tmp = JniHelper::callStaticStringMethod(JCLS_HELPER, "getExtFileDirectory"); + + if (tmp.length() > 0) + { + dir.append(tmp).append("/"); + + return dir; + } + else + { + return ""; + } +} + NS_CC_END #endif // CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID diff --git a/cocos/platform/android/CCFileUtils-android.h b/cocos/platform/android/CCFileUtils-android.h index d50bb11..10ad49f 100644 --- a/cocos/platform/android/CCFileUtils-android.h +++ b/cocos/platform/android/CCFileUtils-android.h @@ -70,6 +70,7 @@ public: virtual FileUtils::Status getContents(const std::string& filename, ResizableBuffer* buffer) override; virtual std::string getWritablePath() const override; + virtual std::string getExtFileDirectory() const override; virtual bool isAbsolutePath(const std::string& strPath) const override; private: diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHelper.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHelper.java index 31fdf24..b428cc3 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHelper.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHelper.java @@ -83,6 +83,7 @@ public class Cocos2dxHelper { private static boolean sActivityVisible; private static String sPackageName; private static String sFileDirectory; + private static String sExtFileDirectory; private static Activity sActivity = null; private static Cocos2dxHelperListener sCocos2dxHelperListener; private static Set onActivityResultListeners = new LinkedHashSet(); @@ -205,8 +206,8 @@ public class Cocos2dxHelper { final ApplicationInfo applicationInfo = activity.getApplicationInfo(); Cocos2dxHelper.sPackageName = applicationInfo.packageName; - Cocos2dxHelper.sFileDirectory = activity.getExternalFilesDir("luaframework").getAbsolutePath(); -// Cocos2dxHelper.sFileDirectory = activity.getFilesDir().getAbsolutePath(); + Cocos2dxHelper.sExtFileDirectory = activity.getExternalFilesDir(null).getAbsolutePath(); + Cocos2dxHelper.sFileDirectory = activity.getFilesDir().getAbsolutePath(); Cocos2dxHelper.nativeSetApkPath(Cocos2dxHelper.getAssetsPath()); @@ -300,6 +301,9 @@ public class Cocos2dxHelper { public static String getWritablePath() { return Cocos2dxHelper.sFileDirectory; } + public static String getExtFileDirectory() { + return Cocos2dxHelper.sExtFileDirectory; + } public static String getCurrentLanguage() { return Locale.getDefault().getLanguage(); diff --git a/cocos/scripting/js-bindings/manual/jsb_global.cpp b/cocos/scripting/js-bindings/manual/jsb_global.cpp index 6d6e9bc..4298a44 100644 --- a/cocos/scripting/js-bindings/manual/jsb_global.cpp +++ b/cocos/scripting/js-bindings/manual/jsb_global.cpp @@ -232,7 +232,11 @@ void jsb_init_file_operation_delegate() se::ScriptEngine::getInstance()->setFileOperationDelegate(delegate); } std::string path = FileUtils::getInstance()->getWritablePath(); + std::string extPath = FileUtils::getInstance()->getExtFileDirectory(); + extPath += "luaframework/"; + path += "luaframework/"; std::vector searchPaths; + searchPaths.push_back(extPath); searchPaths.push_back(path); searchPaths.push_back(""); FileUtils::getInstance()->setSearchPaths(searchPaths);