SMS error

kent

Member
Licensed User
Longtime User
Hi

Every time I receive a SMS I get the following error and my app stops:

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } in anywheresoftware.b4a.phone.PhoneEvents$SMSInterceptor$1@44c1cd50
at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:934)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4914)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
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.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:917)
... 9 more

My SmsInterceptor “sms_lyt” is created in my main activity:
Dim sms_lyt As SmsInterceptor
Under Process_Globals


The MessageReceived event is comply empty: (places in a service)

Sub sms_lyt_event_MessageReceived (From As String, Body As String)

End Sub

If I place a log(“test”) massage in sms_lyt_event_MessageReceived it will be executed before the error !

Can anyone help ?

Best regards
Kent
 

jfitchett56

Member
Licensed User
Longtime User
smsinterceptor not throwing away sms

Hello sirs. I am trying to implement smsintercept but given the example code it fires my event and handles the msg but the msg still displays in the sms list. According to docs, return true if w process it return false to let it bubble to the normal sms handler. code looks for msg to contain 'record' and should handle and block it if so...

'Service module
Sub Process_Globals
Type Message (Address As String, Body As String)
End Sub
Sub Service_Create

End Sub

Sub Service_Start(startingIntent As Intent)
If startingIntent.Action = "android.provider.Telephony.SMS_RECEIVED" Then
Dim messages() As Message
messages = ParseSmsIntent(startingIntent)
For i = 0 To messages.Length - 1
If messages(i).Body.Contains("record") Then
ToastMessageShow("hidden sms detected",True)
Return True
Else
Return False
End If
Next
End If
End Sub

'Parses an SMS intent and returns an array of messages
Sub ParseSmsIntent (In As Intent) As Message()
Dim messages() As Message
If In.HasExtra("pdus") = False Then Return messages
Dim pdus() As Object
Dim r As Reflector
pdus = In.GetExtra("pdus")
If pdus.Length > 0 Then
Dim messages(pdus.Length) As Message
For i = 0 To pdus.Length - 1
r.Target = r.RunStaticMethod("android.telephony.SmsMessage", "createFromPdu", _
Array As Object(pdus(i)), Array As String("[B"))
messages(i).Body = r.RunMethod("getMessageBody")
messages(i).Address = r.RunMethod("getOriginatingAddress")
Next
End If
Return messages
End Sub
 
Upvote 0
Top