diff options
author | André Klitzing <aklitzing@gmail.com> | 2019-01-11 13:38:37 +0100 |
---|---|---|
committer | André Klitzing <aklitzing@gmail.com> | 2019-01-14 09:12:02 +0000 |
commit | 1bba2694302b7200d62d715827f20e8f830d9e03 (patch) | |
tree | 09a1f44a1d9db8909632a9abb4adb3607f36c141 /src | |
parent | 0b4aadadf19adff87fd6a847458be742220fc8fd (diff) |
Check for system feature PackageManager.FEATURE_NFC
Method enableForegroundDispatch and disableForegroundDispatch is not
implemented on some WearOS devices and will throw an exception.
Let's check if the NFC feature exists.
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at org.qtproject.qt5.android.bindings.QtApplication.invokeDelegateMethod(QtApplication.java:157)
at org.qtproject.qt5.android.bindings.QtApplication.invokeDelegate(QtApplication.java:146)
at org.qtproject.qt5.android.bindings.QtActivity.onResume(QtActivity.java:626)
at com.governikus.ausweisapp2.MainActivity.onResume(MainActivity.java:139)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1355)
at android.app.Activity.performResume(Activity.java:7117)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3556)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3621)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1638)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.UnsupportedOperationException
at android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:1315)
at org.qtproject.qt5.android.nfc.QtNfc$1.run(QtNfc.java:135)
at android.app.Activity.runOnUiThread(Activity.java:6184)
at org.qtproject.qt5.android.nfc.QtNfc.start(QtNfc.java:111)
at org.qtproject.qt5.android.QtNative.updateApplicationState(Native Method)
at org.qtproject.qt5.android.QtNative.setApplicationState(QtNative.java:260)
at org.qtproject.qt5.android.QtActivityDelegate.onResume(QtActivityDelegate.java:1098)
... 16 more
See: https://stackoverflow.com/questions/48437854/huawei-watch-2-nfc-feature-not-available-android-wear-2-0
Change-Id: I0e2cad3dce1c3c0a2ea2545fcc6731e2621cdc38
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java b/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java index 6b0fbcbd..19e645f5 100644 --- a/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java +++ b/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java @@ -54,6 +54,7 @@ import android.content.IntentFilter.MalformedMimeTypeException; import android.os.Bundle; import android.util.Log; import android.content.BroadcastReceiver; +import android.content.pm.PackageManager; public class QtNfc { @@ -106,7 +107,9 @@ public class QtNfc static public boolean start() { - if (m_adapter == null || m_activity == null) return false; + if (m_adapter == null || m_activity == null + || !m_activity.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) + return false; m_activity.runOnUiThread(new Runnable() { public void run() { @@ -143,7 +146,9 @@ public class QtNfc static public boolean stop() { - if (m_adapter == null || m_activity == null) return false; + if (m_adapter == null || m_activity == null + || !m_activity.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) + return false; m_activity.runOnUiThread(new Runnable() { public void run() { |