AnnounceForAccessibility is broken for any view that has a ContentDescription.

1. The purpose of the View#announceForAccessibility method is to
   give a message to the user that is not related to a predefined
   view state change. The current implementation is grabbing the
   source view's content description which in general overrides
   the event text which defeats the purpose of the announcement.

bug:6721440

Change-Id: I8814914bea38c5f4c04f57391a64cf2bb06cb975
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index b6f0aa2..56eb628 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -4496,11 +4496,13 @@
      * @param text The announcement text.
      */
     public void announceForAccessibility(CharSequence text) {
-        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
+        if (AccessibilityManager.getInstance(mContext).isEnabled() && mParent != null) {
             AccessibilityEvent event = AccessibilityEvent.obtain(
                     AccessibilityEvent.TYPE_ANNOUNCEMENT);
+            onInitializeAccessibilityEvent(event);
             event.getText().add(text);
-            sendAccessibilityEventUnchecked(event);
+            event.setContentDescription(null);
+            mParent.requestSendAccessibilityEvent(this, event);
         }
     }