Update: 2026-07-06 00:44:01
This commit is contained in:
+61
@@ -256,4 +256,65 @@ class FacebookNavigator(private val service: AccessibilityService) {
|
||||
findNodesByText(node.getChild(i), text, list)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun createPost(text: String): Boolean {
|
||||
val root = service.rootInActiveWindow ?: return false
|
||||
|
||||
// 1. Find "What's on your mind?" or "Write something..."
|
||||
val inputBoxNodes = mutableListOf<android.view.accessibility.AccessibilityNodeInfo>()
|
||||
findNodesByText(root, "بم تفكر؟", inputBoxNodes)
|
||||
findNodesByText(root, "What's on your mind", inputBoxNodes)
|
||||
findNodesByText(root, "اكتب شيئًا", inputBoxNodes)
|
||||
findNodesByText(root, "Write something", inputBoxNodes)
|
||||
|
||||
if (inputBoxNodes.isEmpty()) {
|
||||
android.util.Log.d("FacebookNavigator", "Create post box not found")
|
||||
return false
|
||||
}
|
||||
|
||||
val inputBox = inputBoxNodes.first()
|
||||
inputBox.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK)
|
||||
kotlinx.coroutines.delay(3000) // Wait for Create Post screen to open
|
||||
|
||||
// 2. Find the EditText field
|
||||
val newRoot = service.rootInActiveWindow ?: return false
|
||||
val editTexts = mutableListOf<android.view.accessibility.AccessibilityNodeInfo>()
|
||||
findEditTexts(newRoot, editTexts)
|
||||
|
||||
if (editTexts.isEmpty()) {
|
||||
android.util.Log.d("FacebookNavigator", "EditText not found in Create Post screen")
|
||||
return false
|
||||
}
|
||||
|
||||
// Paste the text
|
||||
val editText = editTexts.first()
|
||||
val arguments = android.os.Bundle()
|
||||
arguments.putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, text)
|
||||
editText.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments)
|
||||
kotlinx.coroutines.delay(1000)
|
||||
|
||||
// 3. Click "Post" (نشر)
|
||||
val postRoot = service.rootInActiveWindow ?: return false
|
||||
val postBtns = mutableListOf<android.view.accessibility.AccessibilityNodeInfo>()
|
||||
findNodesByText(postRoot, "نشر", postBtns)
|
||||
findNodesByText(postRoot, "Post", postBtns)
|
||||
|
||||
if (postBtns.isNotEmpty()) {
|
||||
postBtns.first().performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK)
|
||||
kotlinx.coroutines.delay(4000) // Wait for upload
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
private fun findEditTexts(node: android.view.accessibility.AccessibilityNodeInfo?, list: MutableList<android.view.accessibility.AccessibilityNodeInfo>) {
|
||||
if (node == null) return
|
||||
if (node.className?.toString()?.contains("EditText") == true) {
|
||||
list.add(node)
|
||||
}
|
||||
for (i in 0 until node.childCount) {
|
||||
findEditTexts(node.getChild(i), list)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user