diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index bcd9c8f..5cbe6cd 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -102,5 +102,6 @@
+
diff --git a/android/src/AndroidInterface.cc b/android/src/AndroidInterface.cc
index 87b2441..cd8afdc 100644
--- a/android/src/AndroidInterface.cc
+++ b/android/src/AndroidInterface.cc
@@ -12,10 +12,25 @@
#include "QGCApplication.h"
#include "AndroidInterface.h"
#include
+#include
QString AndroidInterface::getSDCardPath()
{
QAndroidJniObject value = QAndroidJniObject::callStaticObjectMethod("org/mavlink/qgroundcontrol/QGCActivity", "getSDCardPath",
"()Ljava/lang/String;");
- return value.toString();
+ QString sdCardPath = value.toString();
+
+ QString readPermission("android.permission.READ_EXTERNAL_STORAGE");
+ QString writePermission("android.permission.WRITE_EXTERNAL_STORAGE");
+
+ if (QtAndroid::checkPermission(readPermission) == QtAndroid::PermissionResult::Denied ||
+ QtAndroid::checkPermission(writePermission) == QtAndroid::PermissionResult::Denied) {
+ QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(QStringList({ readPermission, writePermission }));
+ if (resultHash[readPermission] == QtAndroid::PermissionResult::Denied ||
+ resultHash[writePermission] == QtAndroid::PermissionResult::Denied) {
+ return QString();
+ }
+ }
+
+ return sdCardPath;
}