diff options
author | Samuel Mira <samuel.mira@qt.io> | 2023-04-27 13:51:52 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-05-02 07:23:59 +0000 |
commit | d9f938fd819f72f91d22d6916b60aac48d26c51a (patch) | |
tree | 9af6ff8542a7518696d6fb181df5c5f54102abf7 | |
parent | ea62bd143d9a3084fcc3900c73889d8b734624c1 (diff) | |
download | qtmultimedia-d9f938fd819f72f91d22d6916b60aac48d26c51a.tar.gz |
Android: Use QFile for content url
Following Scoped Storage feature implementation, the java APIs to
obtain a filedescriptor from a content scheme were removed.
QFile now supports content url, so it was changed to use that.
The QFile still needs to be used as a stream.
Fixes: QTBUG-112973
Change-Id: I0b023be6adab81a591ce0e8a81128e4ca00ba213
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit 9e9cca08ef53692b54a5f02566af7efe439673c9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/multimedia/playback/qmediaplayer.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 600a56c42..e17063652 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -189,25 +189,16 @@ void QMediaPlayerPrivate::setMedia(const QUrl &media, QIODevice *stream) qWarning("Qt was built with -no-feature-temporaryfile: playback from resource file is not supported!"); #endif } -#if defined(Q_OS_ANDROID) - } else if (media.scheme() == QLatin1String("content") && !stream) { - // content scheme should happen only on android - const int fd = QJniObject::callStaticMethod<jint>( - "org/qtproject/qt/android/QtNative", "openFdForContentUrl", - "(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I", - QNativeInterface::QAndroidApplication::context(), - QJniObject::fromString(media.toString()).object(), - QJniObject::fromString(QLatin1String("r")).object()); - - file.reset(new QFile(QLatin1Char(':') + media.path())); - file->open(fd, QFile::ReadOnly, QFile::FileHandleFlag::AutoCloseHandle); - control->setMedia(media, file.get()); -#endif } else { qrcMedia = QUrl(); QUrl url = media; if (url.scheme().isEmpty() || url.scheme() == QLatin1String("file")) url = QUrl::fromUserInput(media.path(), QDir::currentPath(), QUrl::AssumeLocalFile); + if (url.scheme() == QLatin1String("content") && !stream) { + file.reset(new QFile(media.url())); + stream = file.get(); + } + control->setMedia(url, stream); } |