Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supply entity ID if friendly name is empty in android auto #3609

Merged

Conversation

dshokouhi
Copy link
Member

Summary

Fixes the below crash:

FATAL EXCEPTION: main
                                                                                                    Process: io.homeassistant.companion.android, PID: 9353
                                                                                                    java.lang.RuntimeException: java.lang.IllegalArgumentException: The title cannot be null or empty
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$0(RemoteUtils.java:154)
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda1.run(Unknown Source:6)
                                                                                                    	at androidx.car.app.utils.ThreadUtils.runOnMain(ThreadUtils.java:39)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.dispatchCallFromHost(RemoteUtils.java:146)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$1(RemoteUtils.java:185)
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda2.run(Unknown Source:8)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7918)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
                                                                                                    Caused by: java.lang.IllegalArgumentException: The title cannot be null or empty
                                                                                                    	at androidx.car.app.model.GridItem$Builder.setTitle(GridItem.java:248)
                                                                                                    	at io.homeassistant.companion.android.vehicle.EntityGridVehicleScreen.onGetTemplate(EntityGridVehicleScreen.kt:66)
                                                                                                    	at androidx.car.app.Screen.getTemplateWrapper(Screen.java:361)
                                                                                                    	at androidx.car.app.ScreenManager.getTopTemplate(ScreenManager.java:279)
                                                                                                    	at androidx.car.app.AppManager$1$$ExternalSyntheticLambda1.dispatch(Unknown Source:2)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$0(RemoteUtils.java:149)
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda1.run(Unknown Source:6) 
                                                                                                    	at androidx.car.app.utils.ThreadUtils.runOnMain(ThreadUtils.java:39) 
                                                                                                    	at androidx.car.app.utils.RemoteUtils.dispatchCallFromHost(RemoteUtils.java:146) 
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$1(RemoteUtils.java:185) 
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda2.run(Unknown Source:8) 
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942) 
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201) 
                                                                                                    	at android.os.Looper.loop(Looper.java:288) 
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7918) 
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 
2023-06-26 15:33:34.999   985-985   CarApp.H.Tem            com...rojection.gearhead:projection  E  Error: [type: null, cause: null, debug msg: java.lang.IllegalArgumentException: The title cannot be null or empty
                                                                                                    	at androidx.car.app.model.GridItem$Builder.setTitle(GridItem.java:248)
                                                                                                    	at io.homeassistant.companion.android.vehicle.EntityGridVehicleScreen.onGetTemplate(EntityGridVehicleScreen.kt:66)
                                                                                                    	at androidx.car.app.Screen.getTemplateWrapper(Screen.java:361)
                                                                                                    	at androidx.car.app.ScreenManager.getTopTemplate(ScreenManager.java:279)
                                                                                                    	at androidx.car.app.AppManager$1$$ExternalSyntheticLambda1.dispatch(Unknown Source:2)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$0(RemoteUtils.java:149)
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda1.run(Unknown Source:6)
                                                                                                    	at androidx.car.app.utils.ThreadUtils.runOnMain(ThreadUtils.java:39)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.dispatchCallFromHost(RemoteUtils.java:146)
                                                                                                    	at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$1(RemoteUtils.java:185)
                                                                                                    	at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda2.run(Unknown Source:8)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7918)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
                                                                                                    ]

example of problem entity:
image

Screenshots

Link to pull request in Documentation repository

Documentation: home-assistant/companion.home-assistant#

Any other notes

Tested in the emulator and the entity in question no longer causes a crash

@jpelgrom
Copy link
Member

Checked to be sure, the friendlyName value already returns the entity ID if no friendly name is set 👍

@dshokouhi
Copy link
Member Author

Looks like this PR should also fix the below runtime exception I see that some users hit in the play console.

Exception java.lang.RuntimeException:
  at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$0 (RemoteUtils.java:154)
  at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda1.run
  at androidx.car.app.utils.ThreadUtils.runOnMain (ThreadUtils.java:39)
  at androidx.car.app.utils.RemoteUtils.dispatchCallFromHost (RemoteUtils.java:146)
  at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$1 (RemoteUtils.java:185)
  at androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda2.run
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:240)
  at android.os.Looper.loop (Looper.java:351)
  at android.app.ActivityThread.main (ActivityThread.java:8381)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:584)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1013)
Caused by java.lang.IllegalArgumentException:
  at androidx.car.app.model.GridItem$Builder.setTitle (GridItem.java:248)
  at io.homeassistant.companion.android.vehicle.EntityGridVehicleScreen.onGetTemplate (EntityGridVehicleScreen.kt:66)
  at androidx.car.app.Screen.getTemplateWrapper (Screen.java:361)
  at androidx.car.app.ScreenManager.getTopTemplate (ScreenManager.java:279)
  at androidx.car.app.AppManager$1$$ExternalSyntheticLambda1.dispatch
  at androidx.car.app.utils.RemoteUtils.lambda$dispatchCallFromHost$0 (RemoteUtils.java:149)

@JBassett JBassett merged commit 25999ac into home-assistant:master Jun 30, 2023
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants