2017-02-10 6 views
0

Ich arbeite an einem Projekt, bei dem wir den Benutzer warnen müssen, wenn das Energiedialogfeld angezeigt wird. Um den Power-Dialog (Dialog zum Ausschalten/Neustart) anzuzeigen, verwenden wir AccessibilityService zusammen mit performGlobalAction(GLOBAL_ACTION_POWER_DIALOG). Dies funktioniert jedoch, wenn dieses Dialogfeld angezeigt wird, wird kein anderes Ereignis ausgelöst, obwohl wir jeden einzelnen Ereignistyp, Rückkopplungstyp und Flag in accessibilityservice.xml setzen. Dies ist der Code, den wir jetzt haben:Wie erkenne ich den Energiedialog in 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"/> 

Wie man sehen kann ich die Kraft Dialog mit einem Button-Klick mich zu öffnen und es ist möglich, den Benutzer hier zu warnen, aber ich kann das nicht tun, wenn der Benutzer den Netzschalter lang drückt.

Ist es also möglich, ein Erreichbarkeitsereignis zu senden, wenn der Energiedialog geöffnet wird?

Antwort

0

in Ihrem Zugänglichkeit Service, onAccessibilityEvent Methode ändern ...

@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***/ 
    } 
} 
Verwandte Themen