B4A Library BroadcastReceiver

ducphu

Active Member
Licensed User
Longtime User
Hi all,

I use this lib in my app and I see it adds the following permissions:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_NETWORK_STATE
android.permission.CHANGE_NETWORK_STATE
android.permission.ACCESS_COARSE_UPDATES

I don't see why my app needs these permissions. May I ask if these permissions are important to the lib? Can I delete them w/o affect the lib functions?
 

jarda

Member
Licensed User
Longtime User


Hi

I have one question.
How pass on data to Receiver.

1. Sender

code....

Dim d as Int

'MyData
d = 100

where you enter a value of 100 in Sender

etc ???
Broadcast.sendBroadcast ("myInfo", 'MyData=100')



2. Receiver

code

Sub BroadcastReceiver_OnReceive (Action As String, obj As Object)

Dim inte As Intent
inte = obj

Dim o as Object

o = inte.GetExtra("MyData")

if o = 100 then
ToastMessageShow("Success " ,False)
end if

end sub

Thanks for the tutorial
J
 
Last edited:

KL7000F

Member
Licensed User
Longtime User
Hi,
i will usw the Receiver (with BroadCastReceiver) for Airplane_Mode, but i become an error.

My Code:
B4X:
#Region  Service Attributes
    #StartAtBoot: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim Broadcast As BroadCastReceiver
End Sub

Sub Service_Create
    Broadcast.Initialize("BroadcastReceiver")
End Sub

Sub Service_Start (StartingIntent As Intent)
    Broadcast.addAction("android.intent.action.AIRPLANE_MODE")
       Broadcast.SetPriority(2147483647)
       Broadcast.registerReceiver("")
End Sub

Sub BroadcastReceiver_OnReceive (Action As String)
   'ToastMessageShow(Action,False)
End Sub

Sub Service_Destroy

End Sub

This is the Error:
B4X:
BroadcastReceiver has been initialized.

java.lang.Exception: Sub broadcastreceiver_onreceive signature does not match expected signature.
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:189)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:171)
    at com.rootsoft.broadcastreceiver.BroadCastReceiver$1.onReceive(BroadCastReceiver.java:110)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
~e:    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5300)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.AIRPLANE_MODE flg=0x10 (has extras) } in com.rootsoft.broadcastreceiver.BroadCastReceiver$1@3c0e8bb
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:876)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5300)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.RuntimeException: java.lang.Exception: Sub broadcastreceiver_onreceive signature does not match expected signature.
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:171)
    at com.rootsoft.broadcastreceiver.BroadCastReceiver$1.onReceive(BroadCastReceiver.java:110)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866)
    ... 8 more
Caused by: java.lang.Exception: Sub broadcastreceiver_onreceive signature does not match expected signature.
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:189)
    ... 11 more

Thanks
Andy
 

ArminKH

Well-Known Member
change this sub
B4X:
Sub BroadcastReceiver_OnReceive (Action As String)
   'ToastMessageShow(Action,False)
End Sub
to this one
B4X:
Sub BroadcastReceiver_OnReceive (Action As String,Extra as Object)
   'ToastMessageShow(Action,False)
End Sub
it should work
 

HeX0R

Member
Licensed User
Longtime User
I'm trying to get informed whenever the WIFI state changes, so I tried both, with static and dynamic receivers, but none of them seem to work.

I tried WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION, WifiManager.NETWORK_STATE_CHANGED_ACTION and WifiManager.WIFI_STATE_CHANGED_ACTION but none of them ever get broadcasted.

Any idea what I'm doing wrong?


Here is my service part (dynamic receiver at the moment):
B4X:
#Region  Service Attributes
   #StartAtBoot: True
   
#End Region

Sub Process_Globals
   'These global variables will be declared once when the application starts.
   'These variables can be accessed from all modules.
   Dim Broadcast As BroadCastReceiver
   
End Sub

Sub Service_Create
   Broadcast.Initialize("BroadcastReceiver")
End Sub

Sub Service_Start (StartingIntent As Intent)
   Broadcast.addAction("WifiManager.NETWORK_STATE_CHANGED_ACTION")
   Broadcast.addAction("WifiManager.WIFI_STATE_CHANGED_ACTION")
   Broadcast.SetPriority(2147483647)
   Broadcast.registerReceiver("")


End Sub

Sub BroadcastReceiver_OnReceive (Action As String)
   Log("Here I am")

End Sub

Sub Service_Destroy

End Sub
 

JTmartins

Active Member
Licensed User
Longtime User
Hexor, use :
Broadcast.addAction ("android.net.wifi.STATE_CHANGE"), and see how it goes.
 

JTmartins

Active Member
Licensed User
Longtime User
I also take the chance to request instructions if some one now how can we detect a usb flash drive connection in Android 5 ?

I've tryed : Action.MEDIA_MOUNTED ; ACTION_MEDIA_EJECT ; ACTION_MEDIA_REMOVED but none of them seems to work in Android 5

Thanks
 

Krammig

Member
Licensed User
Longtime User
Thanks for sharing this library.
I have just installed the Demo and the V2 library on a phone running 5.1.1 and am seeing the following error ;

B4X:
** Activity (main) Create, isFirst = true **
BroadcastReceiver has been initialized.
** Activity (main) Resume **
Start discovery
Device found: FGT 16810, 88:1B:99:08:F8:52
Discovery stopped
Pairing request: FGT 16810, 88:1B:99:08:F8:52
Not Connected: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
Start discovery
Device found: MPos-000152, B8:32:41:38:6B:85
Discovery stopped
Pairing request: MPos-000152, B8:32:41:38:6B:85
Not Connected: java.io.IOException: read failed, socket might closed or timeout, read ret: -1

Tried two devices as you can see above, same response. I would like to use this, any thoughts ?

thanks
 

Albert Lin

Member
Licensed User
Longtime User
Dear XverhelstX

Thanks very much for this library.
I have 2 question that need your help

B4X:
Sub BR_OnReceive(Action As String, Extras As Object)
     gVibrate.Vibrate (390)                                               
    ToastMessageShow(Action,False)
    
End Sub
Q1: Yes, I can intercept the VOULME_UP or VOLUME_DOWN, but the Action show "android.media.VOLUME_CHANGED_ACTION". How to know which button is pressed? is VOULME_UP or VOLUME_DOWN.

Q2: When the screen off, It seems that BR_OnReceive doesn't happen. How to make BR_OnReceive work while Screen off.

Thanks a lot
Albert Lin
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…