'Broadcast an Intent from Historical Broadcast

The story behind it: I'm trying to command an Android box (with a proprietary launcher) that also manages TV channels. To enter the channel section it is not sufficient to type a number, but a specific key must be pressed. I want to find a way to replicate that key, and then use this command on Home Assistant. I could try with a bluetooth sniffer, but it will be after the failure of my actual attempt.

I ran this adb command after pressing the specific key for TV channels:

adb.exe shell dumpsys activity broadcasts history

And the last broadcast in history is this (timvision is the name of the box):

Historical Broadcast foreground #0:
    BroadcastRecord{560a0f4 u0 android.intent.action.GLOBAL_BUTTON} to user 0
    Intent { act=android.intent.action.GLOBAL_BUTTON flg=0x10000010 (has extras) }
      targetComp: {timvision.launcher/timvision.launcher.TimVisionKeyReceiver}
      extras: Bundle[{android.intent.extra.KEY_EVENT=KeyEvent { action=ACTION_UP, keyCode=KEYCODE_LAST_CHANNEL, scanCode=377, metaState=0, flags=0x8, repeatCount=0, eventTime=10092564, downTime=10092515, deviceId=27, source=0x301, displayId=-1 }}]
    caller=android 3514:system/1000 pid=3514 uid=1000
    enqueueClockTime=2022-04-16 14:43:54.577 dispatchClockTime=2022-04-16 14:43:54.578
    dispatchTime=-3s691ms (+1ms since enq) finishTime=-3s502ms (+189ms since disp)
    resultTo=null resultCode=0 resultData=null
    nextReceiver=1 receiver=null
    Deliver +189ms #0: (manifest)
      priority=0 preferredOrder=0 match=0x0 specificIndex=-1 isDefault=false
      ActivityInfo:
        name=timvision.launcher.TimVisionKeyReceiver
        packageName=timvision.launcher
        enabled=true exported=true directBootAware=false
        resizeMode=RESIZE_MODE_RESIZEABLE

Is possible to replicate this broadcast ? I tried this (with extra_key values too) but seems is not allowed:

adb.exe shell am broadcast -a android.intent.action.GLOBAL_BUTTON -n timvision.launcher/timvision.launcher.TimVisionKeyReceiver

Error:

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.GLOBAL_BUTTON from pid=32487, uid=2000

Alternatives or ideas are welcome.

Thanks


It is not the solution to the question but it is the solution to my problem. So I post it.

The key to enter in the TV channels section is listed on the official Android documentation and is KEYCODE_LAST_CHANNEL with code 229.

On Home Assistant the service to launch is this:

service: androidtv.adb_command
data:
  command: input keyevent 229
target:
  entity_id: media_player.your_android_tv_entity


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source