OSDN Git Service

AlertActivity now behaves as a dialog for accessibility purposes.
authorSvetoslav <svetoslavganov@google.com>
Fri, 16 Jan 2015 23:42:58 +0000 (15:42 -0800)
committerSvetoslav Ganov <svetoslavganov@google.com>
Wed, 21 Jan 2015 18:28:03 +0000 (18:28 +0000)
AlertActivity is intended to look like a dialog but for accessibility
purposes it was populated as an activity. As a result the content of
the "dialog" was not properly announced to the user.

bug:18865632

Change-Id: I27166fc74678981f4f3ad71d6d25727b5110340c

core/java/com/android/internal/app/AlertActivity.java

index 7456def..5566aa6 100644 (file)
 package com.android.internal.app;
 
 import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.KeyEvent;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
 
 /**
  * An activity that follows the visual style of an AlertDialog.
@@ -62,6 +67,19 @@ public abstract class AlertActivity extends Activity implements DialogInterface
         }
     }
 
+    @Override
+    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+        event.setClassName(Dialog.class.getName());
+        event.setPackageName(getPackageName());
+
+        ViewGroup.LayoutParams params = getWindow().getAttributes();
+        boolean isFullScreen = (params.width == ViewGroup.LayoutParams.MATCH_PARENT) &&
+                (params.height == ViewGroup.LayoutParams.MATCH_PARENT);
+        event.setFullScreen(isFullScreen);
+
+        return false;
+    }
+
     /**
      * Sets up the alert, including applying the parameters to the alert model,
      * and installing the alert's content.