diff options
| author | Jurjen de Vries <[email protected]> | 2025-09-11 00:48:15 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-09-11 00:48:15 +0200 |
| commit | 0c69c9848c6b98c92609d209103efc60003c9723 (patch) | |
| tree | 445121def885f13d0f80c06864ad2ff4d5ef95a1 /android/app/src/main/java/io/coinos/nfcwriter/NfcWriterPlugin.java | |
| parent | 2abcf6e435fca5d86960f3ba4228002bfb0a19e6 (diff) | |
| parent | 9277b2921e09ee9dd5f39cf4af30a2330f4d95d1 (diff) | |
| download | coinos-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.java | 62 |
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(); + } +} |
