summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2023-04-27 13:51:52 +0300
committerSamuel Mira <samuel.mira@qt.io>2023-05-02 06:58:25 +0000
commit9e9cca08ef53692b54a5f02566af7efe439673c9 (patch)
tree791f24b7f3dc57290a995e113214e18efd1b5316
parentaa2b9b0474b3bd268f01f0d0e8f6e6c9b681ba3f (diff)
downloadqtmultimedia-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.cpp19
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);
}