Hi everyone. I have been trying to convert an application from QR code to NFC, so I downloaded Erel's example project and compiled it. However I seem to get an error that confuses me. Is there also an updated NFC example under B4XPages?
Call me stupid, and I probably overlooked something really, really, basic and stupid ... But can anyone tell me what has happened here?
Line 38 is actually line 3 as highlighted in the code below.
Any help would be gratefully appreciated.
Thank you.
Alex G.
Call me stupid, and I probably overlooked something really, really, basic and stupid ... But can anyone tell me what has happened here?
Logger connected to: R58M82SMMZX
--------- beginning of main
Copying updated assets files (1)
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
Error occurred on line: 38 (Main)
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.nfc.NfcAdapter.enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], java.lang.String[][])' on a null object reference
at anywheresoftware.b4a.objects.NFC.EnableForegroundDispatch(NFC.java:91)
at b4a.example.main._activity_resume(main.java:429)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
at b4a.example.main.afterFirstLayout(main.java:111)
at b4a.example.main.access$000(main.java:17)
at b4a.example.main$WaitForLayout.run(main.java:83)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
** Activity (main) Pause, UserClosed = true **
Line 38 is actually line 3 as highlighted in the code below.
B4X:
ub Activity_Resume
'forces all nfc intents to be sent to this activity
nfc.EnableForegroundDispatch
Dim si As Intent = Activity.GetStartingIntent
'check that the intent is a new intent
If si.IsInitialized = False Or si = prevIntent Then Return
prevIntent = si
If si.Action.EndsWith("TECH_DISCOVERED") Or si.Action.EndsWith("NDEF_DISCOVERED") Or si.Action.EndsWith("TAG_DISCOVERED") Then
Dim techs As List = nfc.GetTechList(si)
Log($"Techs: ${techs}"$)
'in this case we are only accessing Ndef tags.
If techs.IndexOf("android.nfc.tech.Ndef") > -1 Then
TagTech.Initialize("TagTech", "android.nfc.tech.Ndef" , si)
'Connect to the tag
TagTech.Connect
Else
ToastMessageShow("Tag does not support Ndef.", True)
End If
End If
End Sub
Any help would be gratefully appreciated.
Thank you.
Alex G.