summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Schmertmann <Lars.Schmertmann@governikus.de>2020-07-10 14:54:28 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-07-31 09:04:49 +0000
commit70d9d0ce58a88ce3c2e8673e8ea20ba078632e25 (patch)
tree3d4e2841c5a762a222a36888c64b67568932c2cb
parenta48a7537f7d226e3980586480e59d0b9733b61f1 (diff)
Move the check for relevant NFC intents to the MainNfcNewIntentListener
The MainNfcNewIntentListener registers itself in QtAndroidPrivate from qtbase to listen for intents. Every listener only needs to return true, if the intent contains expected data. This will cause QtAndroidPrivate to stop notify other listeners. So we need to move the check from QNearFieldManagerPrivateImpl::onTargetDiscovered to MainNfcNewIntentListener::handleNewIntent. Change-Id: Ib5001a4d3746782d7162e02a0ffeee6c370a8826 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 8bc3fb29cbc6a49fdff22915081d356d4d6abfa9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/nfc/android/androidmainnewintentlistener.cpp5
-rw-r--r--src/nfc/qnearfieldmanager_android.cpp4
2 files changed, 5 insertions, 4 deletions
diff --git a/src/nfc/android/androidmainnewintentlistener.cpp b/src/nfc/android/androidmainnewintentlistener.cpp
index 2076453d..1b510539 100644
--- a/src/nfc/android/androidmainnewintentlistener.cpp
+++ b/src/nfc/android/androidmainnewintentlistener.cpp
@@ -39,6 +39,7 @@
#include "androidmainnewintentlistener_p.h"
+#include "android/androidjninfc_p.h"
#include "qdebug.h"
#include <QtGui/QGuiApplication>
#include <QtAndroidExtras/QAndroidJniObject>
@@ -60,6 +61,10 @@ MainNfcNewIntentListener::~MainNfcNewIntentListener()
bool MainNfcNewIntentListener::handleNewIntent(JNIEnv */*env*/, jobject intent)
{
+ // Only intents with a tag are relevant
+ if (!AndroidNfc::getTag(intent).isValid())
+ return false;
+
listenersLock.lockForRead();
for (AndroidNfc::AndroidNfcListenerInterface *listener : qAsConst(listeners)) {
listener->newIntent(QAndroidJniObject(intent));
diff --git a/src/nfc/qnearfieldmanager_android.cpp b/src/nfc/qnearfieldmanager_android.cpp
index 0b305501..e5f04cee 100644
--- a/src/nfc/qnearfieldmanager_android.cpp
+++ b/src/nfc/qnearfieldmanager_android.cpp
@@ -304,10 +304,6 @@ QByteArray QNearFieldManagerPrivateImpl::getUid(const QAndroidJniObject &intent)
void QNearFieldManagerPrivateImpl::onTargetDiscovered(QAndroidJniObject intent)
{
- // Only intents with a tag are relevant
- if (!AndroidNfc::getTag(intent).isValid())
- return;
-
// Getting UID
QByteArray uid = getUid(intent);