2017-02-10 123 views
0

我正在开发一个项目,在显示电源对话框时需要提醒用户。要显示电源对话框(关闭/重启对话框),我们使用AccessibilityServiceperformGlobalAction(GLOBAL_ACTION_POWER_DIALOG)。然而,这个工作,当显示这个对话框时,即使我们在accessibilityservice.xml中放置了每一个事件类型,反馈类型和标志,也没有其他事件被抛出。这是代码,我们现在所拥有的:如何检测AccessibilityService中的电源对话框

AccessibilityService:

@Override 
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) { 
     Log.d("TESTING", "EVENT CODE: " + accessibilityEvent.getEventType()); //No event is happening when the power dialog is shown 
     switch (accessibilityEvent.getEventType()){ 
      performGlobalAction(GLOBAL_ACTION_POWER_DIALOG); 
     } 
    } 

accessibilityservice.xml:

<accessibility-service 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accessibilityEventTypes="typeAllMask" 
    android:packageNames="com.testingaccessibility" 
    android:accessibilityFeedbackType="feedbackAllMask" 
    android:accessibilityFlags="flagDefault" 
    android:canRetrieveWindowContent="true" 
    android:canRequestEnhancedWebAccessibility="true" 
    android:canRequestFilterKeyEvents="true" 
    android:canRequestTouchExplorationMode="true"/> 

正如你可以看到我打开电源对话框有一个按钮,点击它可能在这里提醒用户,但是当用户按下电源按钮时我无法做到这一点。

那么,电源对话框打开时是否可以发送辅助功能?

在您的无障碍服务

回答

0

,改变onAccessibilityEvent方法...

@Override 
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) { 
    Log.d("TESTING", "EVENT CODE: " + accessibilityEvent.getEventType()); //No event is happening when the power dialog is shown 
    if(accessibilityEvent.getText().equalsIgnoreCase("check for power dialog content text")){ 


     /***do your work***/ 
    } 
}