要获取 WebView 中的所有 EditText 节点,可以使用以下解决方法:
首先,你需要在你的项目中添加权限:
创建一个 AccessibilityService 来获取 WebView 中的 EditText 节点。在你的项目中创建一个类,继承 AccessibilityService,并重写 onAccessibilityEvent 方法。在这个方法中,你可以使用 AccessibilityNodeInfo 类的 findAccessibilityNodeInfosByViewId 方法来获取 WebView 中的 EditText 节点。代码示例如下:
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
if (rootNode == null) {
return;
}
List editTextNodes = rootNode.findAccessibilityNodeInfosByViewId("com.android.webview:id/editText");
for (AccessibilityNodeInfo node : editTextNodes) {
// 在这里处理获取到的 EditText 节点
// ...
}
}
@Override
public void onInterrupt() {
}
}
标签内添加以下代码:
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);
这样,当你的应用运行时,AccessibilityService 将会被启动,并通过 onAccessibilityEvent 方法获取 WebView 中的 EditText 节点。你可以在该方法中处理获取到的 EditText 节点,例如修改其文本内容等。