From 821f08c8246c13cff23c6d198e221736403c8cb0 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sun, 20 Jan 2019 11:14:32 -0800 Subject: [PATCH] Fix write storage permission problem --- android/AndroidManifest.xml | 2 ++ src/QmlControls/AppMessages.cc | 2 ++ src/QmlControls/AppMessages.qml | 1 + src/main.cc | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 735d27fc0..28751cdc9 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 fab8b7bd6..0b7bcf458 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 af00cceed..29a70c198 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 62457d014..62012d36c 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; } -- 2.22.0