aboutsummaryrefslogtreecommitdiffstats
path: root/android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java
diff options
context:
space:
mode:
authorJurjen de Vries <[email protected]>2025-09-11 00:48:15 +0200
committerGitHub <[email protected]>2025-09-11 00:48:15 +0200
commit0c69c9848c6b98c92609d209103efc60003c9723 (patch)
tree445121def885f13d0f80c06864ad2ff4d5ef95a1 /android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java
parent2abcf6e435fca5d86960f3ba4228002bfb0a19e6 (diff)
parent9277b2921e09ee9dd5f39cf4af30a2330f4d95d1 (diff)
downloadcoinos-ui-0c69c9848c6b98c92609d209103efc60003c9723.tar.gz
coinos-ui-0c69c9848c6b98c92609d209103efc60003c9723.zip
Merge branch 'coinos:master' into master
Diffstat (limited to 'android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java')
-rw-r--r--android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java b/android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java
new file mode 100644
index 00000000..d2954e9b
--- /dev/null
+++ b/android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java
@@ -0,0 +1,62 @@
+// src/android/NfcWriterPlugin.java
+package io.coinos.nfcwriter;
+
+import android.nfc.NfcAdapter;
+import android.nfc.Tag;
+import android.nfc.NfcAdapter.ReaderCallback;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.getcapacitor.Plugin;
+import com.getcapacitor.PluginCall;
+import com.getcapacitor.PluginMethod;
+import com.getcapacitor.annotation.CapacitorPlugin;
+
+@CapacitorPlugin(name = "NfcWriter")
+public class NfcWriterPlugin extends Plugin {
+ private NfcAdapter nfcAdapter;
+
+ @Override
+ public void load() {
+ super.load();
+ nfcAdapter = NfcAdapter.getDefaultAdapter(getContext());
+ }
+
+ @PluginMethod
+ public void enableExclusiveNfcMode(PluginCall call) {
+ if (nfcAdapter == null) {
+ call.reject("NFC adapter not available");
+ return;
+ }
+
+ nfcAdapter.enableReaderMode(
+ getActivity(),
+ new ReaderCallback() {
+ @Override
+ public void onTagDiscovered(Tag tag) {
+ Log.d("NfcWriter", "Tag discovered");
+ bridge.getWebView().post(() -> {
+ bridge.getWebView().evaluateJavascript(
+ "window.dispatchEvent(new CustomEvent('nativeNfcTagDiscovered'))",
+ null
+ );
+ });
+ }
+ },
+ NfcAdapter.FLAG_READER_NFC_A |
+ NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK |
+ NfcAdapter.FLAG_READER_NO_PLATFORM_SOUNDS,
+ null
+ );
+
+ call.resolve();
+ }
+
+ @PluginMethod
+ public void disableExclusiveNfcMode(PluginCall call) {
+ if (nfcAdapter != null) {
+ nfcAdapter.disableReaderMode(getActivity());
+ }
+ call.resolve();
+ }
+}