diff options
author | Lars Schmertmann <Lars.Schmertmann@governikus.de> | 2020-07-10 14:54:28 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-07-31 09:04:49 +0000 |
commit | 70d9d0ce58a88ce3c2e8673e8ea20ba078632e25 (patch) | |
tree | 3d4e2841c5a762a222a36888c64b67568932c2cb | |
parent | a48a7537f7d226e3980586480e59d0b9733b61f1 (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.cpp | 5 | ||||
-rw-r--r-- | src/nfc/qnearfieldmanager_android.cpp | 4 |
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); |