我正在构建一个Android应用程序,我想读取一些其他应用程序触发的WindowManager(系统警报)警报文本。
假设有一些应用程序,如真正的调用者,并且在每次调用结束后,此应用程序在Android的WindowManager(系统警报)中显示该特定电话号码的一些信息,我想要阅读与该电话号码相关的所有这些信息使用我的应用程序在WindowManger(系统警报)中显示。
是否有任何方法可以读取或获取其他应用程序触发WindowManger(系统警报)警报对话框的子视图。
答案 0 :(得分:0)
认为一种方法是编写辅助功能服务(https://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html)并挂钩某些辅助功能事件。也许TYPE_WINDOW_STATE_CHANGED?
答案 1 :(得分:0)
您可以尝试在辅助功能服务中设置AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
并监听
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: {
AccessibilityNodeInfo nodes = getRootInActiveWindow();
String nodeText = nodes.getText();
String nodeContentText nodes.getContentDescription();
// Also you could cycle through the children repeating the same
// As an example only taking the first child, you could
// loop through or use recursion
AccessibilityNodeInfo firstNode = nodes.getChild(0)
String nodeTextFirstChild = firstNode.getText();
String nodeContentTextFirstChild = firstNode.getContentDescription();
}