-
-
Notifications
You must be signed in to change notification settings - Fork 20
Intent Launcher
The Android Intent Executor allows you to remotely execute Android Intents from Home Assistant, opening apps or system settings on the Ava device.
The Intent Launcher exposes a service in Home Assistant that can execute Android Intents remotely. This lets you open apps, launch system settings, or trigger any intent-based action from HA automations.
What It Does:
- Execute Android Intents from Home Assistant automations
- Open apps with custom URI schemes
- Launch system settings pages
- Trigger deep links in apps
- Send broadcast intents to apps or system receivers
- Control device behavior through intent actions
Why Use Intent Launcher:
- Automate app launching based on time, sensors, or voice commands
- Create custom dashboards that launch specific apps
- Integrate third-party apps into your smart home workflows
- Remote control of Ava device without physical interaction
- Go to Settings -> Experimental
- Turn on Intent Launcher
- Enable Show in Home Assistant to expose the service
action: esphome.device_name_launch_intent data: intent_uri: "spotify://"
intent_uri: "spotify://com.spotify.music"
intent_uri: "intent:#Intent;action=android.settings.SETTINGS;end"
You can also send Android broadcasts instead of launching activities. Broadcasts are useful for triggering system events, app receivers, or device-level actions without bringing anything to the foreground.
Use the broadcast: prefix:
action: esphome.device_name_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_TOGGLE_MIC"
Or use structured Home Assistant-style fields:
action: esphome.device_name_launch_intent data: intent_action: "android.intent.action.BOOT_COMPLETED" intent_package_name: "com.example.targetapp" intent_extras: '{"key1":"value1"}' intent_mode: "broadcast"
Why broadcasts matter:
- Launch an activity and the user sees an app open. Send a broadcast and the device just reacts — silently, in the background.
- Many apps expose hidden actions only through broadcasts: Tasker, KWGT, MacroDroid, custom alarm clocks, media players, and device control apps.
- You can chain broadcasts from Home Assistant automations to make an Ava panel behave like a wall-mounted control surface that never leaves your dashboard.
| Intent | Description |
|---|---|
spotify:// |
Open Spotify |
youtube:// |
Open YouTube |
intent:#Intent;action=android.settings.WIFI_SETTINGS;end |
Open WiFi settings |
intent:#Intent;action=android.settings.BLUETOOTH_SETTINGS;end |
Open Bluetooth settings |
intent:#Intent;action=android.settings.DISPLAY_SETTINGS;end |
Open display settings |
broadcast:com.example.ava.ACTION_TOGGLE_MIC |
Toggle Ava microphone |
The real power of the Intent Launcher is sending broadcasts. Here are practical patterns you can copy into Home Assistant automations.
Ava exposes several headless broadcast actions. You can call them from Home Assistant without opening the app.
Toggle microphone:
action: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_TOGGLE_MIC"
Restart the voice satellite:
action: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_RESTART_VOICE_SATELLITE"
Grant Bluetooth permissions via ADB/root helper:
action: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_GRANT_BLUETOOTH"
Check for updates:
action: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_CHECK_UPDATE"
Apply settings from a JSON file on the device:
action: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_APPLY_SETTINGS" intent_extras: '{"settings_file": "/sdcard/ava_headless.json"}'
For the full list of Ava control broadcasts, see ADB Commands.
Automation apps on Android listen for custom broadcasts. From Home Assistant you can fire a named broadcast and let the Android side handle the rest.
Trigger a Tasker task by name:
action: esphome.ava_launch_intent data: intent_action: "net.dinglisch.android.tasker.ACTION_TASK" intent_package_name: "net.dinglisch.android.taskerm" intent_extras: '{"task_name": "Bedtime"}'
Tell KWGT to refresh a widget:
action: esphome.ava_launch_intent data: intent_action: "org.kustom.action.REFRESH_WIDGET" intent_package_name: "org.kustom.widget"
Use broadcasts to interact with system receivers. These are global, so results depend on the ROM and Android version.
Simulate a media play/pause key:
action: esphome.ava_launch_intent data: intent_action: "android.intent.action.MEDIA_BUTTON" intent_extras: '{"command": "togglepause"}'
Ask the system to rescan media storage:
action: esphome.ava_launch_intent data: intent_action: "android.intent.action.MEDIA_MOUNTED" intent_extras: '{"path": "/sdcard"}'
Many apps expose actions as broadcasts. Common patterns:
Start a music app playlist without opening its UI:
action: esphome.ava_launch_intent data: intent_action: "com.myapp.intent.PLAY_PLAYLIST" intent_package_name: "com.myapp.music" intent_extras: '{"playlist_id": "chill"}'
Trigger an alarm/timer app:
action: esphome.ava_launch_intent data: intent_action: "com.alarm.app.DISMISS_ALARM" intent_package_name: "com.alarm.app"
Most real-world broadcasts need extra data. Use the structured fields to pass key/value pairs.
action: esphome.ava_launch_intent data: intent_action: "my.custom.ACTION" intent_package_name: "com.example.myapp" intent_extras: | { "scene": "movie", "brightness": "20", "volume": "8" } intent_mode: "broadcast"
-
intent_action= the broadcast action string -
intent_package_name= which app should receive it -
intent_extras= a JSON object of string key/value pairs -
intent_mode: broadcast= tell Ava this is a broadcast, not an activity launch
Because broadcasts do not open an app window, you can fire several in sequence without the user seeing anything jump around.
"Movie night" automation:
automation: - alias: "Movie Night on Ava Panel" trigger: - platform: state entity_id: input_select.house_mode to: "movie" action: - service: esphome.ava_launch_intent data: intent_uri: "intent:#Intent;action=android.settings.DISPLAY_SETTINGS;end" - service: esphome.ava_launch_intent data: intent_action: "com.spotify.music.playlist" intent_package_name: "com.spotify.music" intent_extras: '{"playlist": "chill"}' intent_mode: "broadcast" - service: esphome.ava_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_RESTART_VOICE_SATELLITE"
- Broadcasts are background events. The target app must already be installed and must have a receiver that listens for the action you send.
- Some system broadcasts require permissions or are ignored on newer Android versions. If a broadcast does nothing, check the Android logcat for a
SecurityExceptionorNoReceiverwarning. - Avoid sending sensitive data in extras unless the receiver is in the same app or protected by a permission.
Scenario: Start your day with personalized apps and settings
automation: - alias: "Morning Device Setup" trigger: - platform: time at: "07:00:00" action: - service: esphome.ava_launch_intent data: intent_uri: "spotify://" - delay: "00:00:05" - service: esphome.ava_launch_intent data: intent_uri: "intent:#Intent;action=android.settings.DISPLAY_SETTINGS;end"
Scenario: Use voice commands to launch specific apps
automation: - alias: "Launch Netflix by Voice" trigger: - platform: conversation command: "launch netflix" action: - service: esphome.ava_launch_intent data: intent_uri: "netflix://" - service: tts.speak data: message: "Launching Netflix"
Scenario: Automatically configure device for guests
automation: - alias: "Activate Guest Mode" trigger: - platform: input_boolean entity_id: input_boolean.guest_mode to: "on" action: - service: esphome.ava_launch_intent data: intent_uri: "intent:#Intent;action=android.settings.WIFI_SETTINGS;end" - service: esphome.ava_launch_intent data: intent_uri: "kiosk://com.example.kiosk"
Scenario: Launch emergency apps or contacts
automation: - alias: "Emergency Call" trigger: - platform: event event_type: emergency_triggered action: - service: esphome.ava_launch_intent data: intent_uri: "tel:911" - service: esphome.ava_launch_intent data: intent_uri: "com.google.android.apps.maps"
Scenario: Control media apps based on presence or time
automation: - alias: "Evening Music" trigger: - platform: sun event: sunset action: - service: esphome.ava_launch_intent data: intent_uri: "spotify://playlist/37i9dQZF1DXcBWIGoYBM5M"
Scenario: Make the Ava panel react to house mode without opening apps
automation: - alias: "Bedtime on Kitchen Panel" trigger: - platform: state entity_id: input_select.house_mode to: "sleep" action: - service: esphome.kitchen_launch_intent data: intent_uri: "broadcast:com.example.ava.ACTION_TOGGLE_MIC" - service: esphome.kitchen_launch_intent data: intent_action: "android.intent.action.VOICE_COMMAND" intent_package_name: "com.google.android.googlequicksearchbox" intent_mode: "broadcast"
Scenario: A camera sees motion; the Ava panel takes a screenshot and saves it locally
automation: - alias: "Motion Snapshot from Front Door" trigger: - platform: state entity_id: binary_sensor.front_door_motion to: "on" action: - service: esphome.hallway_launch_intent data: intent_action: "com.example.ava.ACTION_SCREENSHOT" intent_extras: '{"path": "/sdcard/Ava/snapshots/front_door.jpg"}' intent_mode: "broadcast"
| App | Intent URI | Use Case |
|---|---|---|
| Spotify | spotify:// |
Launch music player |
| Netflix | netflix:// |
Open streaming service |
| YouTube | youtube:// |
Launch video platform |
| Plex | plex:// |
Open media server |
| VLC | vlc:// |
Launch media player |
| App | Intent URI | Use Case |
|---|---|---|
whatsapp:// |
Open messaging | |
| Telegram | tg:// |
Launch chat app |
| Discord | discord:// |
Open communication |
| Zoom | zoomus:// |
Start video call |
| App | Intent URI | Use Case |
|---|---|---|
| Google Maps | com.google.android.apps.maps:// |
Open navigation |
| Chrome | googlechrome:// |
Launch browser |
| Calculator | calculator:// |
Open calculator |
| Camera | camera:// |
Launch camera |
# Launch specific activity action: esphome.ava_launch_intent data: intent_uri: "intent:#Intent;component=com.spotify.music/.MainActivity;end" # Pass extra data action: esphome.ava_launch_intent data: intent_uri: "intent:#Intent;action=android.intent.action.VIEW;data=https://example.com;end"
automation: - alias: "Smart App Launcher" trigger: - platform: state entity_id: sensor.time_of_day action: - choose: - conditions: - condition: state entity_id: sensor.time_of_day state: "morning" sequence: - service: esphome.ava_launch_intent data: intent_uri: "spotify://playlist/morning" - conditions: - condition: state entity_id: sensor.time_of_day state: "evening" sequence: - service: esphome.ava_launch_intent data: intent_uri: "netflix://"
- App Documentation: Check app's developer documentation
- Android Logcat: Monitor logs when opening apps manually
- Third-party Tools: Use tools like "Intent Interceptor"
- Community Resources: Search HA community forums
- Trial and Error: Test common patterns (appname://, com.package.name)
Common system settings intents:
-
android.settings.SETTINGS- Main settings -
android.settings.WIFI_SETTINGS- WiFi settings -
android.settings.BLUETOOTH_SETTINGS- Bluetooth settings -
android.settings.DISPLAY_SETTINGS- Display settings -
android.settings.SOUND_SETTINGS- Sound settings -
android.settings.APPLICATION_DETAILS_SETTINGS- App info
Create sequences of app launches for complex routines:
automation: - alias: "Work Mode Setup" trigger: - platform: time at: "09:00:00" action: - service: esphome.ava_launch_intent data: intent_uri: "slack://" - delay: "00:00:03" - service: esphome.ava_launch_intent data: intent_uri: "calendar://" - delay: "00:00:03" - service: esphome.ava_launch_intent data: intent_uri: "gmail://"
Launch apps based on sensor data:
automation: - alias: "Weather-Appropriate Entertainment" trigger: - platform: state entity_id: sensor.weather_condition action: - choose: - conditions: - condition: state entity_id: sensor.weather_condition state: "rainy" sequence: - service: esphome.ava_launch_intent data: intent_uri: "netflix://" - conditions: - condition: state entity_id: sensor.weather_condition state: "sunny" sequence: - service: esphome.ava_launch_intent data: intent_uri: "spotify://playlist/outdoor"
Combine with Ava voice commands:
automation: - alias: "Voice App Launcher" trigger: - platform: conversation command: "open {{ app_name }}" action: - service: esphome.ava_launch_intent data_template: intent_uri: "{{ app_name }}://"
Use Intent Launcher as the bridge between Home Assistant and Tasker's powerful Android automation capabilities. While Tasker handles complex device-level operations like sensor monitoring, file operations, and advanced system interactions, Intent Launcher provides the smart home context and remote access that Tasker lacks.
Example Integration: Create a Tasker profile that monitors battery level and triggers a Home Assistant automation via Intent Launcher to launch a specific app when battery drops below 20%, while HA simultaneously adjusts smart home lighting to indicate charging status.
Automate excels at complex flow-based Android automation but operates in isolation from your smart home. Use Intent Launcher to inject real-world context into Automate flows - trigger Automate flows based on HA sensor states, or have Automate execute actions that launch specific apps through HA automations.
Example Integration: Set up an Automate flow that controls device brightness based on ambient light sensors, then use Intent Launcher to launch different entertainment apps based on the time of day detected by Home Assistant's sun sensor.
Android Shortcuts provide convenient manual access but lack automation intelligence. Use Intent Launcher to transform static shortcuts into dynamic, context-aware launchers that adapt to your current situation, location, and smart home state.
Example Integration: Create a "Movie Time" shortcut that normally launches Netflix, but through Intent Launcher and HA automation, it launches Disney+ when kids are detected home, or launches Prime Video when it's raining outside.
sensor.your_device_name_intent_launcher_status
service: esphome.ava_launch_intent data: intent_uri: "app://"
automation: - alias: "Open Spotify in the morning" trigger: - platform: time at: "07:00:00" action: - service: esphome.ava_launch_intent data: intent_uri: "spotify://"
automation: - alias: "Launch entertainment when presence detected" trigger: - platform: state entity_id: binary_sensor.living_room_presence to: "on" action: - service: esphome.ava_launch_intent data: intent_uri: "netflix://"
automation: - alias: "Voice app launcher" trigger: - platform: conversation command: "launch {{ app }}" action: - service: esphome.ava_launch_intent data_template: intent_uri: "{{ app }}://"
- Check if Intent Launcher is enabled
- Verify Show in Home Assistant is enabled
- Confirm intent URI format is correct
- Check if target app is installed
- Ensure app is installed on the device
- Verify correct intent URI for the app
- Some apps use different URI schemes
- Check if app supports intent launching
- Restart Ava voice satellite
- Check HA log for errors
- Verify device is online
- Re-enable Intent Launcher
- Check Logs: Monitor HA logs for intent execution errors
- Test Manually: Try launching apps manually first
- Use Simple Intents: Start with basic app URIs
- Verify App Installation: Confirm apps are installed
- Check Permissions: Ensure Ava has necessary permissions
- Test Intents: Always test intent URIs before adding to automations
- Use Delays: Add delays between multiple app launches
- Error Handling: Include fallback actions in automations
- Document URIs: Keep a list of working intent URIs
- Monitor Status: Use the status entity to verify execution
- Version Compatibility: Check app updates don't break intent URIs
Back to Home
- Quick-Start
- System-Requirements
- Voice-Control
- Chorus-Wake
- ESPHome-Encryption
- HA-Direct-Connection
- Browser
- Screensaver
- Floating-Windows
- Home-Launcher
- Home-Screen-Widgets
- Notification-Scenes
- Quick-Entity
- Sensors
- Backup
- Sendspin
- Bluetooth
- Voice-Messages-Calls
- Music-Playback
- Camera
- Screen-Control
- Intent-Launcher
- ADB-Commands
- Mod-Store
- Ava-Fleet