From 2834851073e3b12027af717851aedd2c9578c17a Mon Sep 17 00:00:00 2001
From: SeeLook <945374+SeeLook@users.noreply.github.com>
Date: Sat, 28 Nov 2015 23:52:03 +0100
Subject: [PATCH] Using Android preferred method to obtain external storage
 path (environment variable)

---
 src/libs/core/Android/tandroid.cpp | 20 ++++++++++++--------
 src/libs/core/tglobals.cpp         |  7 +++++--
 2 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/libs/core/Android/tandroid.cpp b/src/libs/core/Android/tandroid.cpp
index 215c08f9b..fa89a809c 100644
--- a/src/libs/core/Android/tandroid.cpp
+++ b/src/libs/core/Android/tandroid.cpp
@@ -20,6 +20,7 @@
 #include "tandroid.h"
 #include <QtAndroidExtras/qandroidfunctions.h>
 #include <QtAndroidExtras/qandroidjnienvironment.h>
+#include <QtCore/qdebug.h>
 
 
 void Tandroid::setScreenLockDisabled() {
@@ -40,14 +41,17 @@ void Tandroid::setScreenLockDisabled() {
 
 
 QString Tandroid::getExternalPath() {
-  QAndroidJniObject extDirObject =
-      QAndroidJniObject::callStaticObjectMethod("android/os/Environment", "getExternalStorageDirectory", "()Ljava/io/File;");
-  QAndroidJniObject externalPath = extDirObject.callObjectMethod( "getAbsolutePath", "()Ljava/lang/String;" );
-  QAndroidJniEnvironment env;
-  if (env->ExceptionCheck()) {
-    env->ExceptionClear();
-  }
-  return externalPath.toString();
+  QString extPath = qgetenv("SECONDARY_STORAGE");
+  if (extPath.isEmpty())
+    extPath = qgetenv("EXTERNAL_STORAGE"); // return primary storage path (device internal)
+  return extPath;
+//  QAndroidJniObject extDirObject =
+//      QAndroidJniObject::callStaticObjectMethod("android/os/Environment", "getExternalStorageDirectory", "()Ljava/io/File;");
+//  QAndroidJniObject externalPath = extDirObject.callObjectMethod( "getAbsolutePath", "()Ljava/lang/String;" );
+//  QAndroidJniEnvironment env;
+//  if (env->ExceptionCheck())
+//    env->ExceptionClear();
+//  return externalPath.toString();
 }
 
 
diff --git a/src/libs/core/tglobals.cpp b/src/libs/core/tglobals.cpp
index dfc9412c6..55afd04e8 100644
--- a/src/libs/core/tglobals.cpp
+++ b/src/libs/core/tglobals.cpp
@@ -28,6 +28,9 @@
 #include "touch/ttouchproxy.h"
 #include "tlayoutparams.h"
 #include "tinitcorelib.h"
+#if defined (Q_OS_ANDROID)
+  #include <Android/tandroid.h>
+#endif
 #include <QDir>
 #include <QSettings>
 #include <QCoreApplication>
@@ -223,8 +226,8 @@ void Tglobals::loadSettings(QSettings* cfg) {
 			E->expertsAnswerEnable = cfg->value("expertsAnswerEnable", false).toBool();
 			E->studentName = cfg->value("studentName", QString()).toString();
 #if defined (Q_OS_ANDROID)
-      E->examsDir = cfg->value("examsDir", qgetenv("EXTERNAL_STORAGE")).toString();
-      E->levelsDir = cfg->value("levelsDir", qgetenv("EXTERNAL_STORAGE")).toString();
+      E->examsDir = cfg->value("examsDir", Tandroid::getExternalPath()).toString();
+      E->levelsDir = cfg->value("levelsDir", Tandroid::getExternalPath()).toString();
 #else
 			E->examsDir = cfg->value("examsDir", QDir::homePath()).toString();
 			E->levelsDir = cfg->value("levelsDir", QDir::homePath()).toString();
-- 
GitLab