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