in facebook-core/src/main/java/com/facebook/appevents/codeless/ViewIndexer.kt [75:114]
override fun run() {
try {
val activity = activityReference.get()
val rootView = getRootView(activity)
if (null == activity || null == rootView) {
return
}
val activityName = activity.javaClass.simpleName
if (!getIsAppIndexingEnabled()) {
return
}
if (isUnityApp) {
UnityReflection.captureViewHierarchy()
return
}
val screenshotFuture = FutureTask(ScreenshotTaker(rootView))
uiThreadHandler.post(screenshotFuture)
var screenshot: String? = ""
try {
screenshot = screenshotFuture[1, TimeUnit.SECONDS]
} catch (e: Exception) {
Log.e(TAG, "Failed to take screenshot.", e)
}
val viewTree = JSONObject()
try {
viewTree.put("screenname", activityName)
viewTree.put("screenshot", screenshot)
val viewArray = JSONArray()
val rootViewInfo = ViewHierarchy.getDictionaryOfView(rootView)
viewArray.put(rootViewInfo)
viewTree.put("view", viewArray)
} catch (e: JSONException) {
Log.e(TAG, "Failed to create JSONObject")
}
val tree = viewTree.toString()
sendToServer(tree)
} catch (e: Exception) {
Log.e(TAG, "UI Component tree indexing failure!", e)
}
}