浏览代码

Fix issue with `get_current_dir()` returning the wrong path on Android

(cherry picked from commit b5e1096c61b8976f193328628b6099ff2830e9c4)
Fredia Huya-Kouadio 3 年之前
父节点
当前提交
f96f8ddfc7
共有 2 个文件被更改,包括 15 次插入0 次删除
  1. 14 0
      platform/android/dir_access_jandroid.cpp
  2. 1 0
      platform/android/dir_access_jandroid.h

+ 14 - 0
platform/android/dir_access_jandroid.cpp

@@ -134,6 +134,20 @@ String DirAccessJAndroid::get_drive(int p_drive) {
 	}
 }
 
+String DirAccessJAndroid::get_current_dir() {
+	String base = _get_root_path();
+	String bd = current_dir;
+	if (base != "") {
+		bd = current_dir.replace_first(base, "");
+	}
+
+	if (bd.begins_with("/")) {
+		return _get_root_string() + bd.substr(1, bd.length());
+	} else {
+		return _get_root_string() + bd;
+	}
+}
+
 Error DirAccessJAndroid::change_dir(String p_dir) {
 	String new_dir = get_absolute_path(p_dir);
 	if (new_dir == current_dir) {

+ 1 - 0
platform/android/dir_access_jandroid.h

@@ -69,6 +69,7 @@ public:
 	virtual String get_drive(int p_drive) override;
 
 	virtual Error change_dir(String p_dir) override; ///< can be relative or absolute, return false on success
+	virtual String get_current_dir() override; ///< return current dir location
 
 	virtual bool file_exists(String p_file) override;
 	virtual bool dir_exists(String p_dir) override;