diff options
author | Liang Qi <liang.qi@qt.io> | 2016-05-06 09:16:02 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-05-06 09:16:02 +0200 |
commit | caded2edf69e8a60897653ace1e10b72199c7427 (patch) | |
tree | 1b28cd7578195ca3d7e14c83ccf181adbe2476ec /src/nfc | |
parent | 9677182c07b22f5f1f4fdff3f1fce6a28f76b662 (diff) | |
parent | 54c9cd9e28bc6f0a2fa5118cfdbe922d71db6623 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
examples/nfc/corkboard/corkboard.pro
Change-Id: I5d1ea0a8e21a1b55dbf744c2f4b469bc51f05c7a
Diffstat (limited to 'src/nfc')
-rw-r--r-- | src/nfc/qnearfieldmanager.h | 4 | ||||
-rw-r--r-- | src/nfc/qnearfieldmanager_android.cpp | 5 | ||||
-rw-r--r-- | src/nfc/qnearfieldtarget_android.cpp | 9 | ||||
-rw-r--r-- | src/nfc/qnearfieldtarget_android_p.h | 2 |
4 files changed, 15 insertions, 5 deletions
diff --git a/src/nfc/qnearfieldmanager.h b/src/nfc/qnearfieldmanager.h index 0d5176d9..2cf69823 100644 --- a/src/nfc/qnearfieldmanager.h +++ b/src/nfc/qnearfieldmanager.h @@ -77,6 +77,10 @@ public: bool startTargetDetection(); void stopTargetDetection(); + //TODO Qt 6 Consider removal of this registration mechanism + //None of the currently supported platforms supports the feature + //or in fact the implementation (on Android) is not what the + //function is supposed to do. int registerNdefMessageHandler(QObject *object, const char *method); int registerNdefMessageHandler(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, diff --git a/src/nfc/qnearfieldmanager_android.cpp b/src/nfc/qnearfieldmanager_android.cpp index 8fbd4371..d7db6ecf 100644 --- a/src/nfc/qnearfieldmanager_android.cpp +++ b/src/nfc/qnearfieldmanager_android.cpp @@ -192,6 +192,10 @@ void QNearFieldManagerPrivateImpl::stopTargetDetection() updateReceiveState(); } +// FIXME This is supposed to be a platform registration. A message that +// matches the given NDEF filter should restart the current application. +// The implementation below only works as long as the current application +// is running. It is not a platform wide registration on Android. int QNearFieldManagerPrivateImpl::registerNdefMessageHandler(QObject *object, const QMetaMethod &method) { ndefMessageHandlers.append(QPair<QPair<int, QObject *>, QMetaMethod>(QPair<int, QObject *>(m_handlerID, object), method)); @@ -200,6 +204,7 @@ int QNearFieldManagerPrivateImpl::registerNdefMessageHandler(QObject *object, co return m_handlerID++; } +// FIXME see above int QNearFieldManagerPrivateImpl::registerNdefMessageHandler(const QNdefFilter &filter, QObject *object, const QMetaMethod &method) { diff --git a/src/nfc/qnearfieldtarget_android.cpp b/src/nfc/qnearfieldtarget_android.cpp index 0e3836f3..e0c1616d 100644 --- a/src/nfc/qnearfieldtarget_android.cpp +++ b/src/nfc/qnearfieldtarget_android.cpp @@ -310,12 +310,12 @@ void NearFieldTarget::checkIsTargetLost() QString techStr = m_techList.first(); QAndroidJniObject tagTech = getTagTechnology(techStr); tagTech.callMethod<void>("connect"); - if (catchJavaExceptions()) { + if (catchJavaExceptions(false)) { handleTargetLost(); return; } tagTech.callMethod<void>("close"); - if (catchJavaExceptions()) + if (catchJavaExceptions(false)) handleTargetLost(); } @@ -442,11 +442,12 @@ QByteArray NearFieldTarget::jbyteArrayToQByteArray(const jbyteArray &byteArray) return resultArray; } -bool NearFieldTarget::catchJavaExceptions() const +bool NearFieldTarget::catchJavaExceptions(bool verbose) const { QAndroidJniEnvironment env; if (env->ExceptionCheck()) { - env->ExceptionDescribe(); + if (verbose) + env->ExceptionDescribe(); env->ExceptionClear(); return true; } diff --git a/src/nfc/qnearfieldtarget_android_p.h b/src/nfc/qnearfieldtarget_android_p.h index e9351a64..94bb394d 100644 --- a/src/nfc/qnearfieldtarget_android_p.h +++ b/src/nfc/qnearfieldtarget_android_p.h @@ -99,7 +99,7 @@ protected: void handleTargetLost(); QAndroidJniObject getTagTechnology(const QString &tech) const; QByteArray jbyteArrayToQByteArray(const jbyteArray &byteArray) const; - bool catchJavaExceptions() const; + bool catchJavaExceptions(bool verbose = true) const; protected: QAndroidJniObject m_intent; |