首页 > 解决方案 > 失去对 AndroidTV 的输入关注

问题描述

我在 AndroidTV 上有一个非常奇怪的错误。

AlertDialog在应用程序中打开一个,在 10-20% 的情况下我完全失去了远程输入焦点。全局处理的按钮(例如 HOME)可以正常工作,但 DPAD、OK 和其他远程按钮什么也不做。

在 logcat 中,我看到了这个:

W: Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_LEFT, scanCode=105, metaState=0, flags=0x28, repeatCount=0, eventTime=4748412, downTime=4748300, deviceId=9, source=0x301 }    
W: Dropping event due to no window focus: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_DPAD_LEFT, scanCode=105, metaState=0, flags=0x8, repeatCount=0, eventTime=4748468, downTime=4748468, deviceId=9, source=0x301 }    
W: Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_LEFT, scanCode=105, metaState=0, flags=0x28, repeatCount=0, eventTime=4748570, downTime=4748468, deviceId=9, source=0x301 }

我检查了adb shell dumpsys window输出是否有任何焦点异常,但没有什么奇怪的。

我的猜测是焦点被某些东西挡住了,但我不知道那可能是什么。我将不胜感激任何提示。

标签: androidandroid-tv

解决方案


没有看到您的代码,但它可能是竞争条件问题,因为您提到它是“10-20% 的情况”。你可以有两种方法来弄清楚。1. 尝试在您的活动中添加日志 onKeyDown 或 onKeyUp 方法,看看当您按下遥控器上的按钮时会发生什么。2. 启动对话框时调用“yourview.requestFocus()”。请注意,yourview 是您的对话框的根视图,只需根据您的情况更改为任何内容。


推荐阅读