summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/qandroidplatformservices.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-04 20:18:14 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-04 20:18:14 +0100
commit4159ee840549df11287294f0928e90f35f3e06ff (patch)
tree4a3947e37d54bdb78b4042e9ced20dbf181b5a2c /src/plugins/platforms/android/qandroidplatformservices.cpp
parent59dbf1786f22ec4ac88d8f9d38cac5cfb82acaea (diff)
parentc8c39ecc37c156ac2677de09a26548dfc274b564 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: config.tests/unix/ptrsize.test configure src/corelib/global/qnamespace.h src/network/socket/qabstractsocket.cpp tests/auto/other/networkselftest/networkselftest.pro Change-Id: Ic78abb4a34f9068567cea876861d4220f5a07672
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformservices.cpp')
-rw-r--r--src/plugins/platforms/android/qandroidplatformservices.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformservices.cpp b/src/plugins/platforms/android/qandroidplatformservices.cpp
index 2dba6c78e1..412e3e0466 100644
--- a/src/plugins/platforms/android/qandroidplatformservices.cpp
+++ b/src/plugins/platforms/android/qandroidplatformservices.cpp
@@ -33,8 +33,9 @@
#include "qandroidplatformservices.h"
#include <QUrl>
-#include <QDir>
+#include <QFile>
#include <QDebug>
+#include <QMimeDatabase>
#include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE
@@ -43,13 +44,27 @@ QAndroidPlatformServices::QAndroidPlatformServices()
{
}
-bool QAndroidPlatformServices::openUrl(const QUrl &url)
+bool QAndroidPlatformServices::openUrl(const QUrl &theUrl)
{
+ QString mime;
+ QUrl url(theUrl);
+
+ // if the file is local, we need to pass the MIME type, otherwise Android
+ // does not start an Intent to view this file
+ if ((url.scheme().isEmpty() && QFile::exists(url.path())) || url.isLocalFile()) {
+ // a real URL including the scheme is needed, else the Intent can not be started
+ url.setScheme(QLatin1String("file"));
+
+ QMimeDatabase mimeDb;
+ mime = mimeDb.mimeTypeForUrl(url).name();
+ }
+
QJNIObjectPrivate urlString = QJNIObjectPrivate::fromString(url.toString());
+ QJNIObjectPrivate mimeString = QJNIObjectPrivate::fromString(mime);
return QJNIObjectPrivate::callStaticMethod<jboolean>(QtAndroid::applicationClass(),
"openURL",
- "(Ljava/lang/String;)Z",
- urlString.object());
+ "(Ljava/lang/String;Ljava/lang/String;)Z",
+ urlString.object(), mimeString.object());
}
bool QAndroidPlatformServices::openDocument(const QUrl &url)