2017-02-10 18 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***/ 
    } 
} 
関連する問題