2017-02-10 119 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***/ 
    } 
}