8#include <QtCore/QJniEnvironment>
9#include <QtCore/QJniObject>
10#include <QtCore/private/qjnihelpers_p.h>
12#ifndef QT_NO_CLIPBOARD
14using namespace QtJniTypes;
25 clipboardManager->emitChanged(QClipboard::Clipboard);
30 m_clipboardManager = QtClipboardManager::construct(QtAndroidPrivate::context(),
31 reinterpret_cast<jlong>(
this));
42 QMimeData *data =
new QMimeData;
43 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardText")) {
44 data->setText(m_clipboardManager.callMethod<QString>(
"getClipboardText"));
46 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardHtml")) {
47 data->setHtml(m_clipboardManager.callMethod<QString>(
"getClipboardHtml"));
49 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardUri")) {
50 auto uris = m_clipboardManager.callMethod<QString[]>(
"getClipboardUris");
53 for (
const QString &uri : uris)
64 Q_ASSERT(supportsMode(mode));
67 data = getClipboardMimeData();
73 m_clipboardManager.callMethod<
void>(
"clearClipData");
79 auto context = QtAndroidPrivate::context();
80 if (data->hasUrls()) {
81 QList<QUrl> urls = data->urls();
82 for (
const auto &u : std::as_const(urls))
83 m_clipboardManager.callMethod<
void>(
"setClipboardUri", context, u.toEncoded());
84 }
else if (data->hasHtml()) {
85 m_clipboardManager.callMethod<
void>(
"setClipboardHtml",
86 context, data->text(), data->html());
87 }
else if (data->hasText()) {
88 m_clipboardManager.callMethod<
void>(
"setClipboardText", context, data->text());
98 if (data && supportsMode(mode))
99 setClipboardMimeData(data);
106 return QClipboard::Clipboard == mode;
111 bool success = env.registerNativeMethods(Traits<QtClipboardManager>::className(),
112 { Q_JNI_NATIVE_SCOPED_METHOD(onClipboardDataChanged, QAndroidPlatformClipboard) });
114 qCritical() <<
"QtClipboardManager: registerNativeMethods() failed";