react-native-nfc-manager 3.11.5 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/community/revteltech/nfc/NfcManager.java +30 -0
- package/android/src/main/java/community/revteltech/nfc/TagTechnologyRequest.java +3 -0
- package/index.d.ts +6 -0
- package/package.json +1 -1
- package/src/NfcManager.js +1 -0
- package/src/NfcManagerAndroid.js +11 -0
- package/src/NfcTech/NdefFormatableHandlerAndroid.js +16 -0
|
@@ -266,6 +266,36 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
@ReactMethod
|
|
270
|
+
public void formatNdef(ReadableArray rnArray, ReadableMap options, Callback callback) {
|
|
271
|
+
boolean readOnly = options.getBoolean("readOnly");
|
|
272
|
+
|
|
273
|
+
synchronized(this) {
|
|
274
|
+
if (techRequest != null) {
|
|
275
|
+
try {
|
|
276
|
+
NdefFormatable ndef = (NdefFormatable)techRequest.getTechHandle();
|
|
277
|
+
if (ndef == null) {
|
|
278
|
+
callback.invoke(ERR_API_NOT_SUPPORT);
|
|
279
|
+
} else {
|
|
280
|
+
byte[] bytes = rnArrayToBytes(rnArray);
|
|
281
|
+
NdefMessage msg = new NdefMessage(bytes);
|
|
282
|
+
if (readOnly) {
|
|
283
|
+
ndef.formatReadOnly(msg);
|
|
284
|
+
} else {
|
|
285
|
+
ndef.format(msg);
|
|
286
|
+
}
|
|
287
|
+
callback.invoke();
|
|
288
|
+
}
|
|
289
|
+
} catch (Exception ex) {
|
|
290
|
+
Log.d(LOG_TAG, ex.toString());
|
|
291
|
+
callback.invoke(ex.toString());
|
|
292
|
+
}
|
|
293
|
+
} else {
|
|
294
|
+
callback.invoke(ERR_NO_TECH_REQ);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
269
299
|
private void mifareClassicAuthenticate(char type, int sector, ReadableArray key, Callback callback) {
|
|
270
300
|
if (techRequest != null) {
|
|
271
301
|
try {
|
|
@@ -11,6 +11,7 @@ import android.nfc.tech.NfcV;
|
|
|
11
11
|
import android.nfc.tech.NfcF;
|
|
12
12
|
import android.nfc.tech.MifareClassic;
|
|
13
13
|
import android.nfc.tech.MifareUltralight;
|
|
14
|
+
import android.nfc.tech.NdefFormatable;
|
|
14
15
|
import android.nfc.tech.IsoDep;
|
|
15
16
|
import android.util.Log;
|
|
16
17
|
import com.facebook.react.bridge.*;
|
|
@@ -76,6 +77,8 @@ class TagTechnologyRequest {
|
|
|
76
77
|
mTech = MifareClassic.get(tag);
|
|
77
78
|
} else if (techType.equals("MifareUltralight")) {
|
|
78
79
|
mTech = MifareUltralight.get(tag);
|
|
80
|
+
} else if (techType.equals("NdefFormatable")) {
|
|
81
|
+
mTech = NdefFormatable.get(tag);
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
if (mTech == null) {
|
package/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ declare module 'react-native-nfc-manager' {
|
|
|
22
22
|
MifareIOS = 'mifare',
|
|
23
23
|
Iso15693IOS = 'iso15693',
|
|
24
24
|
FelicaIOS = 'felica',
|
|
25
|
+
NdefFormatable = 'NdefFormatable',
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export enum NdefStatus {
|
|
@@ -121,6 +122,10 @@ declare module 'react-native-nfc-manager' {
|
|
|
121
122
|
) => Promise<void>;
|
|
122
123
|
}
|
|
123
124
|
|
|
125
|
+
interface NdefFormatableHandlerAndroid {
|
|
126
|
+
formatNdef: (bytes: number[], options?: { readOnly: boolean }) => Promise<void>;
|
|
127
|
+
}
|
|
128
|
+
|
|
124
129
|
/** [iOS ONLY] */
|
|
125
130
|
interface Iso15693HandlerIOS {
|
|
126
131
|
getSystemInfo: (
|
|
@@ -236,6 +241,7 @@ declare module 'react-native-nfc-manager' {
|
|
|
236
241
|
setTimeout(timeout: number): Promise<void>;
|
|
237
242
|
mifareClassicHandlerAndroid: MifareClassicHandlerAndroid;
|
|
238
243
|
mifareUltralightHandlerAndroid: MifareUltralightHandlerAndroid;
|
|
244
|
+
ndefFormatableHandlerAndroid: NdefFormatableHandlerAndroid;
|
|
239
245
|
}
|
|
240
246
|
|
|
241
247
|
const nfcManager: NfcManager;
|
package/package.json
CHANGED
package/src/NfcManager.js
CHANGED
package/src/NfcManagerAndroid.js
CHANGED
|
@@ -2,6 +2,7 @@ import {callNative} from './NativeNfcManager';
|
|
|
2
2
|
import {NfcManagerBase} from './NfcManager';
|
|
3
3
|
import {MifareClassicHandlerAndroid} from './NfcTech/MifareClassicHandlerAndroid';
|
|
4
4
|
import {MifareUltralightHandlerAndroid} from './NfcTech/MifareUltralightHandlerAndroid';
|
|
5
|
+
import {NdefFormatableHandlerAndroid} from './NfcTech/NdefFormatableHandlerAndroid';
|
|
5
6
|
import {handleNativeException, buildNfcExceptionAndroid} from './NfcError';
|
|
6
7
|
|
|
7
8
|
const NfcAdapter = {
|
|
@@ -111,6 +112,16 @@ class NfcManagerAndroid extends NfcManagerBase {
|
|
|
111
112
|
return this._mifareUltralightHandlerAndroid;
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
// -------------------------------------
|
|
116
|
+
// (android) NfcTech.NdefFormatable API
|
|
117
|
+
// -------------------------------------
|
|
118
|
+
get ndefFormatableHandlerAndroid() {
|
|
119
|
+
if (!this._ndefFormatableHandlerAndroid) {
|
|
120
|
+
this._ndefFormatableHandlerAndroid = new NdefFormatableHandlerAndroid(this);
|
|
121
|
+
}
|
|
122
|
+
return this._ndefFormatableHandlerAndroid;
|
|
123
|
+
}
|
|
124
|
+
|
|
114
125
|
// -------------------------------------
|
|
115
126
|
// Android private
|
|
116
127
|
// -------------------------------------
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {callNative} from '../NativeNfcManager';
|
|
2
|
+
import {handleNativeException} from '../NfcError';
|
|
3
|
+
|
|
4
|
+
class NdefFormatableHandlerAndroid {
|
|
5
|
+
async formatNdef(bytes, options={}) {
|
|
6
|
+
const defaultOptions = { readOnly: false };
|
|
7
|
+
return handleNativeException(
|
|
8
|
+
callNative('formatNdef', [
|
|
9
|
+
bytes,
|
|
10
|
+
{...defaultOptions, ...options}
|
|
11
|
+
])
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {NdefFormatableHandlerAndroid};
|