Android App - Action widget "Unable to send action"

Hi,

I have 2 android phones but on one of them I can’t use the widget to send action.
I do the same setup on both phones but on one I am getting “Unable to send action”. The phone permissions are the same on both phones.

Is there any log which I could check because the one in HA doesn’t show anything so I assume it’s local to the phone/app.

Phones: Samsung S23 Ultra and Samsung A55.

Android app is on 2025.11.3-full.

For now I’d just need more info since the versions, permissions and other are same.

Thanks.

IP addresses of the phones please? (see Android settings/connections).

What is showing from your router end?

Is one phone connected directly to your local LAN via WiFi and the other trying via the phone network? Any intervening networking such as VPN, DuckDNS, NabuCasa, VLANs, etc?

Not enough info.

Both phones are on the same network. They have both local IP (192.168.1.xxx).

No VPN or any other network related differences. The app works on both devices without any problem, the only difference is that the A55 has this widget problem.

I tried to download Companion app logs but in between the widget started working.

Same issue here, the app works perfectly but the widgets are Unable to send action.

Looks like an update problem.

I had the same issue since a week or two.
One Android phone (Android 15) was able to use my custom widget while the other one (Pixel 10 Pro on Android 16) worked only when connected to wifi, never on mobile data.

What fixed it for me was adding the Home Assistant app as an exemption to data saving (although data saving was disabled in Android). This can be done under Settings → Apps → Home Assistant → Mobile Data Usage → Unlimited Usage (…)

(this is on stock Android 16, ymmv, it may also be called “unrestricted data”).

1 Like

This saved me a ton of headache. Apparently I had enabled this on my phone, but not on my wife’s phone. Hers was not able to send actions but mine was. Your suggestion to allow unlimited data usage in mobile fixed it. Thanks for the tip!

1 Like

Great solution, and dependency discovery. This seems like it should be in the installation documentation and setup routine. Have you brought it to the developers attention, so others don’t have the same issue?

there is a mention in the troubleshooting docs about checking data saver settings which are similar to this, every manufacturer will call it something else so impossible to capture all the names it may be under

https://companion.home-assistant.io/docs/troubleshooting/faqs/#android-widget-is-not-working

For me the problem was the power settings. Settings → Apps → Home Assistant → Battery. If the setting is on managed or limited the widget does not work. When set to unrestricted the widgets work as intended. [Setting names might be different, translation from german]. Android-Version 16

I still have this problem, enabled background data and unrestricted mobile data. Any thoughts?

Me too, it is annoying.
Clearing the app data and setting everything up again helped me.

And what’s more, I leave the house, log in remotely via the other server, and when I return, we’re right where we were, the error is back. There must be some problem with the application’s server settings.

Same issue. Unrestricted battery and data doesn’t help. Reinstall only solves it for a few days. (Android 15)

I tested it again with same network connection and app version and I get this. I don’t know if it warrants a bug open on Github.

Samsung S23 Ultra - App version - 2026.2.1-full (20142)

02-19 11:13:24.597 24782 24782 D ButtonWidget: Broadcast received:
02-19 11:13:24.597 24782 24782 D ButtonWidget: Broadcast action: io.homeassistant.companion.android.widgets.button.ButtonWidget.CALL_SERVICE
02-19 11:13:24.597 24782 24782 D ButtonWidget: AppWidgetId: 21
02-19 11:13:24.597 24782 24782 D AppWidgetProvider: onReceive:io.homeassistant.companion.android.widgets.button.ButtonWidget.CALL_SERVICE
02-19 11:13:24.598 24782 24782 D ButtonWidget: Calling widget action
02-19 11:13:24.598 24782 24782 I AppWidgetManager: partiallyUpdateAppWidget() appWidgetIds = [21]
02-19 11:13:24.600 24782 24782 D ButtonWidget$callConfiguredAction: Action Call Data loaded:
02-19 11:13:24.600 24782 24782 D ButtonWidget$callConfiguredAction: domain: button
02-19 11:13:24.600 24782 24782 D ButtonWidget$callConfiguredAction: action: press
02-19 11:13:24.600 24782 24782 D ButtonWidget$callConfiguredAction: action_data: {“entity_id”:[“button.button1”]}
02-19 11:13:24.600 24782 24782 D ButtonWidget$callConfiguredAction: Sending action call to Home Assistant
02-19 11:13:25.203 24782 24782 D ButtonWidget$callConfiguredAction: Action call sent successfully

Samsung A55 - App version - 2026.2.1-full (20142)

02-19 11:18:54.003 20114 20114 D ButtonWidget$callConfiguredAction: Action Call Data loaded:
02-19 11:18:54.003 20114 20114 D ButtonWidget$callConfiguredAction: domain: button
02-19 11:18:54.003 20114 20114 D ButtonWidget$callConfiguredAction: action: press
02-19 11:18:54.003 20114 20114 D ButtonWidget$callConfiguredAction: action_data: {“entity_id”:[“button.button1”]}
02-19 11:18:54.006 20114 20114 D ButtonWidget$callConfiguredAction: Sending action call to Home Assistant
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: Could not send action call.
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: io.homeassistant.companion.android.common.data.integration.IntegrationException: All URLs failed for webhook
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderKt.tryOnUrls(ServerConnectionStateProvider.kt:63)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderKt$tryOnUrls$1.invokeSuspend(Unknown Source:13)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:98)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at android.os.Handler.handleCallback(Handler.java:995)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at android.os.Handler.dispatchMessage(Handler.java:103)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at android.os.Looper.loopOnce(Looper.java:273)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at android.os.Looper.loop(Looper.java:363)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at android.app.ActivityThread.main(ActivityThread.java:10060)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.lang.reflect.Method.invoke(Native Method)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: Caused by: java.net.UnknownHostException: Unable to resolve host “hooks.nabu.casa”: No address associated with hostname
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.net.InetAddress.getAllByName(InetAddress.java:1152)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:50)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:170)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:132)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:70)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RealRoutePlanner.planConnect$okhttp(RealRoutePlanner.kt:164)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:75)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.kt:119)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:62)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:298)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:101)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:85)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:74)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:226)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:574)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.lang.Thread.run(Thread.java:1119)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at libcore.io.Linux.android_getaddrinfo(Native Method)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:222)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135)
02-19 11:18:54.075 20114 20114 E ButtonWidget$callConfiguredAction: … 24 more
02-19 11:18:54.091 20114 20114 I Toast : show: caller = io.homeassistant.companion.android.widgets.button.ButtonWidget$callConfiguredAction$1.invokeSuspend:345

Caused by: java.net.UnknownHostException: Unable to resolve host “hooks.nabu.casa”: No address associated with hostname
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)

No sure what these mean but in my case it’s trying to send the action via internet and not locally but on both phones HA Cloud works ok.

Anyway I just tested it again and since it works on my phone it’s not that relevant to spend too much time on it but I hope this helps find the issue.