练习做一个跳过广告的软件,我用weditor定位到关闭按钮,但是用performAction(AccessibilityNodeInfo.ACTION_CLICK)点击无效。
textNodeInfoList.get(0).isClickable()
//返回false
List<AccessibilityNodeInfo> textNodeInfoList = sourceNodeInfo.findAccessibilityNodeInfosByText("关闭");
//这里能获取关闭节点。
定位元素截图两张,各位帮我看看,具体该怎么做!
你可以试试其他方法,java的这个
Rect bounds = new Rect();
textNodeInfoList.get(0).getBoundsInScreen(bounds);
int x = bounds.centerX();
int y = bounds.centerY();
GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();
Path path = new Path();
path.moveTo(x, y);
gestureBuilder.addStroke(new GestureDescription.StrokeDescription(path, 0, 100));
GestureDescription gestureDescription = gestureBuilder.build();
dispatchGesture(gestureDescription, new GestureResultCallback() {
@Override
public void onCompleted(GestureDescription gestureDescription) {
super.onCompleted(gestureDescription);
// 点击完成后的操作
}
});
【以下回答由 GPT 生成】
问题解决方法:
根据问题描述和截图,问题可能出在两个方面:一是没有正确获取到关闭按钮的节点信息,二是点击操作无效。
getResourceName()
方法获取节点的资源名称,然后通过日志输出来确认。可以使用以下代码:List<AccessibilityNodeInfo> textNodeInfoList = sourceNodeInfo.findAccessibilityNodeInfosByText("关闭");
for (AccessibilityNodeInfo node : textNodeInfoList) {
String resourceName = node.getViewIdResourceName();
Log.d("AccessibilityService", "Resource Name: " + resourceName);
}
确保日志输出的资源名称与关闭按钮的资源名称匹配。如果输出的资源名称为空,可能是因为关闭按钮的节点不可见,此时需要调用getParent()
方法来获取其父节点,然后再对父节点进行搜索。
可以尝试通过以下代码将窗口设为可点击,并再次进行点击操作:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
将以上代码放置在点击操作之前,重新运行程序,看是否能够成功进行点击操作。
如果以上方法都没有解决问题,可能是由于应用程序的安全设置或其他原因导致无法进行点击操作。此时建议尝试其他方式来跳过广告,比如模拟屏幕触摸事件或者使用系统级别的广告屏蔽软件。
希望以上解决方案能够帮助到你解决问题。如果还有其他问题,请随时提问。
参考结合GPT4.0、文心一言,如有帮助,恭请采纳。
首先,检查下权限问题:确保你的应用有适当的权限。在AndroidManifest.xml文件中,你需要添加以下权限:
<uses-permission android:name="android.permission.ACCESSIBILITY_SERVICE" />
其次,使用performAction(AccessibilityNodeInfo.ACTION_CLICK)点击一个元素时,该元素必须是你的应用正确的定位到了关闭按钮
然后,使用performClick()方法。这个方法会模拟一个物理点击事件。示例:node.performClick();