summaryrefslogtreecommitdiffstats
path: root/src/nfc
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-05-06 09:16:02 +0200
committerLiang Qi <liang.qi@qt.io>2016-05-06 09:16:02 +0200
commitcaded2edf69e8a60897653ace1e10b72199c7427 (patch)
tree1b28cd7578195ca3d7e14c83ccf181adbe2476ec /src/nfc
parent9677182c07b22f5f1f4fdff3f1fce6a28f76b662 (diff)
parent54c9cd9e28bc6f0a2fa5118cfdbe922d71db6623 (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.h4
-rw-r--r--src/nfc/qnearfieldmanager_android.cpp5
-rw-r--r--src/nfc/qnearfieldtarget_android.cpp9
-rw-r--r--src/nfc/qnearfieldtarget_android_p.h2
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;