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?