我正在寻找一种方法来检查由辅助功能服务实现的事件来源,以查看它是否是用户名字段。 我发现有一种方法可以检查字段,如果它是如下的密码:
if (event.isPassword()){
Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo
.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android");
source.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);}
我想要检测用户名字段,因为如果我使用(!event.isPassword())它会检测到例如url文本框甚至搜索框,这是我的条件:
if (source != null && event.getClassName().equals("android.widget.EditText") && getEventType(event).equals("TYPE_VIEW_FOCUSED"))
答案 0 :(得分:3)
Android中没有"用户名"字段,与其他类型的字段不同。您没有可靠的方法来确定给定的EditText
是用于"用户名",一个人的姓氏,还是一首诗的前几个单词。
请注意,您的isPassword()
方法也有些不可靠。可以创建一个EditText
窗口小部件,在不使用内置密码功能的情况下覆盖密码条目,对于那些我希望isPassword()
返回false
的情况。相反,开发人员可以使用password
类型EditText
来输入密码以外的信息。还有EditText
允许用户隐藏和显示密码的情况;如果显示密码,我不知道isPassword()
会返回什么。