diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index 735d27f..28751cd 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -69,6 +69,8 @@
+
+
diff --git a/src/QmlControls/AppMessages.cc b/src/QmlControls/AppMessages.cc
index fab8b7b..0b7bcf4 100644
--- a/src/QmlControls/AppMessages.cc
+++ b/src/QmlControls/AppMessages.cc
@@ -76,6 +76,8 @@ void AppLogModel::writeMessages(const QString dest_file)
QTextStream out(&file);
out << writebuffer;
success = out.status() == QTextStream::Ok;
+ } else {
+ qWarning() << "AppLogModel::writeMessages write failed:" << file.errorString();
}
emit debug_model->writeFinished(success);
});
diff --git a/src/QmlControls/AppMessages.qml b/src/QmlControls/AppMessages.qml
index af00cce..29a70c1 100644
--- a/src/QmlControls/AppMessages.qml
+++ b/src/QmlControls/AppMessages.qml
@@ -133,6 +133,7 @@ QGCView {
id: writeDialog
folder: QGroundControl.settingsManager.appSettings.logSavePath
nameFilters: [qsTr("Log files (*.txt)"), qsTr("All Files (*)")]
+ fileExtension: qsTr("txt")
selectExisting: false
title: qsTr("Select log save file")
qgcView: _qgcView
diff --git a/src/main.cc b/src/main.cc
index 62457d0..62012d3 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -97,6 +97,21 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
}
#endif
+#ifdef __android__
+#include
+bool checkAndroidWritePermission() {
+ QtAndroid::PermissionResult r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
+ if(r == QtAndroid::PermissionResult::Denied) {
+ QtAndroid::requestPermissionsSync( QStringList() << "android.permission.WRITE_EXTERNAL_STORAGE" );
+ r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
+ if(r == QtAndroid::PermissionResult::Denied) {
+ return false;
+ }
+ }
+ return true;
+}
+#endif
+
/**
* @brief Starts the application
*
@@ -254,6 +269,10 @@ int main(int argc, char *argv[])
} else
#endif
{
+
+#ifdef __android__
+ checkAndroidWritePermission();
+#endif
if (!app->_initForNormalAppBoot()) {
return -1;
}