Hi
I'm a new user of the tool so am still very much feeling my way around - apologies in advance if the following is down to my stupidity, but here goes anyway!
I'm trying to put together a simple SMS intercepter app - for no other reason than to get my head around services and the main activities etc.
Having looked at some of the code spread around the forums for this, I've come up with the following:
Activity code:
The service Module (called "SMS") is as follows:
All of the Log commands are triggered (in the filtered log tab), but I keep getting an app (or service) crash on the phone.
I've copied the (unfiltered) log snippet here in case it helps point out the error of my ways - I can upload the entire project/log file if needed.
Any ideas?
Thanks
Martin
I'm a new user of the tool so am still very much feeling my way around - apologies in advance if the following is down to my stupidity, but here goes anyway!
I'm trying to put together a simple SMS intercepter app - for no other reason than to get my head around services and the main activities etc.
Having looked at some of the code spread around the forums for this, I've come up with the following:
Activity code:
B4X:
'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
End Sub
Sub Activity_Create(FirstTime As Boolean)
End Sub
Sub Activity_Resume
SMS_Start
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub SMS_Start
If Sms.ServiceRunning = False Then
StartService(Sms)
Sms.ServiceRunning = True
ToastMessageShow("Running in background", True)
End If
End Sub
The service Module (called "SMS") is as follows:
B4X:
'Service module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim ServiceRunning As Boolean
Dim SI As SmsInterceptor
Dim Notification1 As Notification
End Sub
Sub Service_Create
SI.Initialize2("SI", 999)
Notification1.Initialize
Notification1.Icon = "icon" 'use the application icon file for the notification
Notification1.Vibrate = False
Log("Service initialized")
End Sub
Sub Service_Start (StartingIntent As Intent)
Notification1.SetInfo("SMS Example", "test started", Main)
Notification1.Sound = False
Service.StartForeground(1, Notification1)
Log("Service Started")
End Sub
Sub Service_Destroy
SI.StopListening()
Service.StopForeground(1)
End Sub
Sub SI_MessageReceived (From As String, Body As String)
Log("Message Received From: " & From)
ToastMessageShow(From, True)
Log("Toast shown")
Return True ' I've also tried Return False, as I don't want the standard SMS app to be skipped if possible
End Sub
All of the Log commands are triggered (in the filtered log tab), but I keep getting an app (or service) crash on the phone.
I've copied the (unfiltered) log snippet here in case it helps point out the error of my ways - I can upload the entire project/log file if needed.
B4X:
Message Received From: #MobileNumberHere#
Toast shown
SMS SC address: #ServiceCentreNumHere#
originatingAddress.address : #MobileNumberHere#
SMS SC timestamp: 1328142047000
hasUserDataHeader : false
messageBody : Test
Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0x4001e578)
GC_EXPLICIT freed 131K, 49% free 3081K/5959K, external 0K/0K, paused 32ms
FATAL EXCEPTION: main
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } in anywheresoftware.b4a.phone.PhoneEvents$SMSInterceptor$1@40534828
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: java.lang.String
at anywheresoftware.b4a.phone.PhoneEvents$SMSInterceptor$1.onReceive(PhoneEvents.java:362)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
... 9 more
Dumpstate > /data/log/dumpstate_app_error
BSmsObserver - onReceive - describeContents = 0
BSmsObserver - action = android.provider.Telephony.SMS_RECEIVED
Any ideas?
Thanks
Martin