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; }