在android中读取其他应用程序WindowManager(系统警报)警报?

时间:2017-05-17 07:07:27

标签: android android-alertdialog system-alert-window

我正在构建一个Android应用程序,我想读取一些其他应用程序触发的WindowManager(系统警报)警报文本。

假设有一些应用程序,如真正的调用者,并且在每次调用结束后,此应用程序在Android的WindowManager(系统警报)中显示该特定电话号码的一些信息,我想要阅读与该电话号码相关的所有这些信息使用我的应用程序在WindowManger(系统警报)中显示。

是否有任何方法可以读取或获取其他应用程序触发WindowManger(系统警报)警报对话框的子视图。

2 个答案:

答案 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();
    }