diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-04 12:27:37 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-04 12:28:48 +0100 |
commit | f8246099eafbfa08910544a89c7a5047af92f54d (patch) | |
tree | efd2a67ce5d866f4b46a2bbf804a5f9195d0d863 /src/plugins/platforms/android | |
parent | 1bf639d5605863970b8dc5a91d5fc785cdf0ecf1 (diff) | |
parent | 6ed957fd7fc748143093fa335d8b4506c3ea16fa (diff) |
Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
src/corelib/io/qstorageinfo_unix.cpp
src/plugins/platforms/windows/qwindowsmousehandler.cpp
src/widgets/styles/qwindowsvistastyle.cpp
Change-Id: Ie1725933815891cc8c86258d4c0e8ed0ab386edf
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformservices.cpp | 23 |
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) |