diff options
author | Samuel Mira <samuel.mira@qt.io> | 2023-04-27 13:51:52 +0300 |
---|---|---|
committer | Samuel Mira <samuel.mira@qt.io> | 2023-05-02 06:58:25 +0000 |
commit | 9e9cca08ef53692b54a5f02566af7efe439673c9 (patch) | |
tree | 791f24b7f3dc57290a995e113214e18efd1b5316 | |
parent | aa2b9b0474b3bd268f01f0d0e8f6e6c9b681ba3f (diff) | |
download | qtmultimedia-9e9cca08ef53692b54a5f02566af7efe439673c9.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
Pick-to: 6.5 6.2
Change-Id: I0b023be6adab81a591ce0e8a81128e4ca00ba213
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
-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); } |