summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android
diff options
context:
space:
mode:
authorVolker Krause <vkrause@kde.org>2020-10-16 16:40:49 +0200
committerVolker Krause <vkrause@kde.org>2020-10-23 16:37:14 +0200
commitd53bbecf4c2565f2e5fd834b20ff90b073a25189 (patch)
treeff9858266458c5bfc990bece15e9941f8f53bd56 /src/plugins/platforms/android
parentf6d09d426b66dd49a3d7917ff055d34f37e109f3 (diff)
Fix QSaveFile always failing on content: URLs
QSaveFile needs QFileInfo::isWritable() to work, which 7e5f38aec667 caused to always return false for content: URLs. Change-Id: If839331e4bd176765ed242791cb253c2064f5f6d Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r--src/plugins/platforms/android/androidcontentfileengine.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/platforms/android/androidcontentfileengine.cpp b/src/plugins/platforms/android/androidcontentfileengine.cpp
index bdbf2186ba..749ce136b6 100644
--- a/src/plugins/platforms/android/androidcontentfileengine.cpp
+++ b/src/plugins/platforms/android/androidcontentfileengine.cpp
@@ -103,10 +103,17 @@ AndroidContentFileEngine::FileFlags AndroidContentFileEngine::fileFlags(FileFlag
QJNIObjectPrivate::fromString(fileName(DefaultName)).object());
if (!exists && !isDir)
return flags;
- if (isDir)
+ if (isDir) {
flags = DirectoryType | commonFlags;
- else
+ } else {
flags = FileType | commonFlags;
+ const bool writable = QJNIObjectPrivate::callStaticMethod<jboolean>(
+ "org/qtproject/qt/android/QtNative", "checkIfWritable",
+ "(Landroid/content/Context;Ljava/lang/String;)Z", QtAndroidPrivate::context(),
+ QJNIObjectPrivate::fromString(fileName(DefaultName)).object());
+ if (writable)
+ flags |= WriteOwnerPerm|WriteUserPerm|WriteGroupPerm|WriteOtherPerm;
+ }
return type & flags;
}