Sub ClicText(node As Object,text As String) As Boolean
Dim lnode As List = node, method As String = IIf(text.contains(":id/"),"getViewIdResourceName","getText")
lnode = lnode.Get(0)
For i=0 To lnode.Size-1
If GetString(lnode.Get(i),method)=text Then
Try
Dim r As Rect = GetRect(lnode.Get(i))
Return DispatchGesture(r.CenterX,r.CenterY)
Catch
Log(LastException)
Return False
End Try
Exit
End If
Next
Return False
End Sub
Sub GetString (jo As JavaObject, method As String) As String
Try
Dim txt As String = jo.RunMethod(method,Null)
Catch
txt = "error"
End Try
Return txt
End Sub
Sub GetRect(jo As JavaObject) As Rect
Dim res As Rect
res.Initialize(0,0,0,0)
Try
jo.As(JavaObject).RunMethod("getBoundsInScreen",Array(res))
Catch
Log(LastException)
End Try
Return res
End Sub
public Sub DispatchGesture(x As Int,y As Int) As Boolean
Dim jo As JavaObject
jo.InitializeContext
Return jo.RunMethod("DispatchGesture", Array(x,y))
End Sub
#if Java
import android.accessibilityservice.AccessibilityService;
import android.content.ComponentName;
import android.view.accessibility.AccessibilityEvent;
import android.graphics.Path;
import android.accessibilityservice.GestureDescription;
import anywheresoftware.b4a.BA;
public boolean DispatchGesture(int x,int y) {
GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();
Path path= new Path();
path.moveTo(x, y);
gestureBuilder.addStroke(new GestureDescription.StrokeDescription(path, 0, 50));
return super.dispatchGesture(gestureBuilder.build(), null, null) ;
}
#End If