Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b8c69ed authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Update AccessibilityNodeInfo API as per API council request" into klp-dev

parents 107e2d41 cb8ed39b
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -28688,6 +28688,7 @@ package android.view.accessibility {
    method public void addAction(int);
    method public void addAction(int);
    method public void addChild(android.view.View);
    method public void addChild(android.view.View);
    method public void addChild(android.view.View, int);
    method public void addChild(android.view.View, int);
    method public boolean canOpenPopup();
    method public int describeContents();
    method public int describeContents();
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String);
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String);
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(java.lang.String);
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(java.lang.String);
@@ -28696,18 +28697,17 @@ package android.view.accessibility {
    method public int getActions();
    method public int getActions();
    method public void getBoundsInParent(android.graphics.Rect);
    method public void getBoundsInParent(android.graphics.Rect);
    method public void getBoundsInScreen(android.graphics.Rect);
    method public void getBoundsInScreen(android.graphics.Rect);
    method public android.os.Bundle getBundle();
    method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
    method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
    method public int getChildCount();
    method public int getChildCount();
    method public java.lang.CharSequence getClassName();
    method public java.lang.CharSequence getClassName();
    method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
    method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
    method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
    method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
    method public java.lang.CharSequence getContentDescription();
    method public java.lang.CharSequence getContentDescription();
    method public android.os.Bundle getExtras();
    method public int getInputType();
    method public int getInputType();
    method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
    method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
    method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
    method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
    method public int getMovementGranularities();
    method public int getMovementGranularities();
    method public boolean getOpensPopup();
    method public java.lang.CharSequence getPackageName();
    method public java.lang.CharSequence getPackageName();
    method public android.view.accessibility.AccessibilityNodeInfo getParent();
    method public android.view.accessibility.AccessibilityNodeInfo getParent();
    method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
    method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
@@ -28746,6 +28746,7 @@ package android.view.accessibility {
    method public void setAccessibilityFocused(boolean);
    method public void setAccessibilityFocused(boolean);
    method public void setBoundsInParent(android.graphics.Rect);
    method public void setBoundsInParent(android.graphics.Rect);
    method public void setBoundsInScreen(android.graphics.Rect);
    method public void setBoundsInScreen(android.graphics.Rect);
    method public void setCanOpenPopup(boolean);
    method public void setCheckable(boolean);
    method public void setCheckable(boolean);
    method public void setChecked(boolean);
    method public void setChecked(boolean);
    method public void setClassName(java.lang.CharSequence);
    method public void setClassName(java.lang.CharSequence);
@@ -28770,7 +28771,6 @@ package android.view.accessibility {
    method public void setLongClickable(boolean);
    method public void setLongClickable(boolean);
    method public void setMovementGranularities(int);
    method public void setMovementGranularities(int);
    method public void setMultiLine(boolean);
    method public void setMultiLine(boolean);
    method public void setOpensPopup(boolean);
    method public void setPackageName(java.lang.CharSequence);
    method public void setPackageName(java.lang.CharSequence);
    method public void setParent(android.view.View);
    method public void setParent(android.view.View);
    method public void setParent(android.view.View, int);
    method public void setParent(android.view.View, int);
@@ -28822,17 +28822,17 @@ package android.view.accessibility {
  }
  }
  public static final class AccessibilityNodeInfo.CollectionInfo {
  public static final class AccessibilityNodeInfo.CollectionInfo {
    method public int getHorizontalSize();
    method public int getColumnCount();
    method public int getVerticalSize();
    method public int getRowCount();
    method public boolean isHierarchical();
    method public boolean isHierarchical();
    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
  }
  }
  public static final class AccessibilityNodeInfo.CollectionItemInfo {
  public static final class AccessibilityNodeInfo.CollectionItemInfo {
    method public int getHorizontalPosition();
    method public int getColumnIndex();
    method public int getHorizontalSpan();
    method public int getColumnSpan();
    method public int getVerticalPosition();
    method public int getRowIndex();
    method public int getVerticalSpan();
    method public int getRowSpan();
    method public boolean isHeading();
    method public boolean isHeading();
    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
  }
  }
+115 −91
Original line number Original line Diff line number Diff line
@@ -518,7 +518,7 @@ public class AccessibilityNodeInfo implements Parcelable {
    private int mTextSelectionEnd = UNDEFINED;
    private int mTextSelectionEnd = UNDEFINED;
    private int mInputType = InputType.TYPE_NULL;
    private int mInputType = InputType.TYPE_NULL;


    private Bundle mBundle;
    private Bundle mExtras;


    private int mConnectionId = UNDEFINED;
    private int mConnectionId = UNDEFINED;


@@ -1471,9 +1471,18 @@ public class AccessibilityNodeInfo implements Parcelable {
    }
    }


    /**
    /**
     * Gets if the node is a live region for whose changes the user
     * Gets if the node is a live region.
     * should be notified. It is the responsibility of the accessibility
     * <p>
     * A live region is a node that contains information that is important
     * for the user and when it changes the user has to be notified. For
     * example, if the user plays a video and the application shows a
     * progress indicator with the percentage of buffering, then the progress
     * indicator should be marked as a live region.
     * </p>
     * <p>
     * It is the responsibility of the accessibility
     * service to monitor this region and notify the user if it changes.
     * service to monitor this region and notify the user if it changes.
     * </p>
     *
     *
     * @return If the node is a live region.
     * @return If the node is a live region.
     */
     */
@@ -1525,7 +1534,7 @@ public class AccessibilityNodeInfo implements Parcelable {
     *
     *
     * @return If the the node opens a popup.
     * @return If the the node opens a popup.
     */
     */
    public boolean getOpensPopup() {
    public boolean canOpenPopup() {
        return getBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP);
        return getBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP);
    }
    }


@@ -1539,7 +1548,8 @@ public class AccessibilityNodeInfo implements Parcelable {
     *
     *
     * @param opensPopup If the the node opens a popup.
     * @param opensPopup If the the node opens a popup.
     */
     */
    public void setOpensPopup(boolean opensPopup) {
    public void setCanOpenPopup(boolean opensPopup) {
        enforceNotSealed();
        setBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP, opensPopup);
        setBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP, opensPopup);
    }
    }


@@ -1927,7 +1937,7 @@ public class AccessibilityNodeInfo implements Parcelable {
    }
    }


    /**
    /**
     * Gets an optional bundle with additional data. The bundle
     * Gets an optional bundle with extra data. The bundle
     * is lazily created and never <code>null</code>.
     * is lazily created and never <code>null</code>.
     * <p>
     * <p>
     * <strong>Note:</strong> It is recommended to use the package
     * <strong>Note:</strong> It is recommended to use the package
@@ -1939,11 +1949,11 @@ public class AccessibilityNodeInfo implements Parcelable {
     *
     *
     * @return The bundle.
     * @return The bundle.
     */
     */
    public Bundle getBundle() {
    public Bundle getExtras() {
        if (mBundle == null) {
        if (mExtras == null) {
            mBundle = new Bundle();
            mExtras = new Bundle();
        }
        }
        return mBundle;
        return mExtras;
    }
    }


    /**
    /**
@@ -2194,9 +2204,9 @@ public class AccessibilityNodeInfo implements Parcelable {
        parcel.writeInt(mTextSelectionEnd);
        parcel.writeInt(mTextSelectionEnd);
        parcel.writeInt(mInputType);
        parcel.writeInt(mInputType);


        if (mBundle != null) {
        if (mExtras != null) {
            parcel.writeInt(1);
            parcel.writeInt(1);
            parcel.writeBundle(mBundle);
            parcel.writeBundle(mExtras);
        } else {
        } else {
            parcel.writeInt(0);
            parcel.writeInt(0);
        }
        }
@@ -2213,8 +2223,8 @@ public class AccessibilityNodeInfo implements Parcelable {


        if (mCollectionInfo != null) {
        if (mCollectionInfo != null) {
            parcel.writeInt(1);
            parcel.writeInt(1);
            parcel.writeInt(mCollectionInfo.getHorizontalSize());
            parcel.writeInt(mCollectionInfo.getRowCount());
            parcel.writeInt(mCollectionInfo.getVerticalSize());
            parcel.writeInt(mCollectionInfo.getColumnCount());
            parcel.writeInt(mCollectionInfo.isHierarchical() ? 1 : 0);
            parcel.writeInt(mCollectionInfo.isHierarchical() ? 1 : 0);
        } else {
        } else {
            parcel.writeInt(0);
            parcel.writeInt(0);
@@ -2222,10 +2232,10 @@ public class AccessibilityNodeInfo implements Parcelable {


        if (mCollectionItemInfo != null) {
        if (mCollectionItemInfo != null) {
            parcel.writeInt(1);
            parcel.writeInt(1);
            parcel.writeInt(mCollectionItemInfo.getHorizontalPosition());
            parcel.writeInt(mCollectionItemInfo.getColumnIndex());
            parcel.writeInt(mCollectionItemInfo.getHorizontalSpan());
            parcel.writeInt(mCollectionItemInfo.getColumnSpan());
            parcel.writeInt(mCollectionItemInfo.getVerticalPosition());
            parcel.writeInt(mCollectionItemInfo.getRowIndex());
            parcel.writeInt(mCollectionItemInfo.getVerticalSpan());
            parcel.writeInt(mCollectionItemInfo.getRowSpan());
            parcel.writeInt(mCollectionItemInfo.isHeading() ? 1 : 0);
            parcel.writeInt(mCollectionItemInfo.isHeading() ? 1 : 0);
        } else {
        } else {
            parcel.writeInt(0);
            parcel.writeInt(0);
@@ -2266,8 +2276,8 @@ public class AccessibilityNodeInfo implements Parcelable {
        mTextSelectionStart = other.mTextSelectionStart;
        mTextSelectionStart = other.mTextSelectionStart;
        mTextSelectionEnd = other.mTextSelectionEnd;
        mTextSelectionEnd = other.mTextSelectionEnd;
        mInputType = other.mInputType;
        mInputType = other.mInputType;
        if (other.mBundle != null && !other.mBundle.isEmpty()) {
        if (other.mExtras != null && !other.mExtras.isEmpty()) {
            getBundle().putAll(other.mBundle);
            getExtras().putAll(other.mExtras);
        }
        }
        mRangeInfo = other.mRangeInfo;
        mRangeInfo = other.mRangeInfo;
        mCollectionInfo = other.mCollectionInfo;
        mCollectionInfo = other.mCollectionInfo;
@@ -2323,7 +2333,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        mInputType = parcel.readInt();
        mInputType = parcel.readInt();


        if (parcel.readInt() == 1) {
        if (parcel.readInt() == 1) {
            getBundle().putAll(parcel.readBundle());
            getExtras().putAll(parcel.readBundle());
        }
        }


        if (parcel.readInt() == 1) {
        if (parcel.readInt() == 1) {
@@ -2376,8 +2386,8 @@ public class AccessibilityNodeInfo implements Parcelable {
        mTextSelectionStart = UNDEFINED;
        mTextSelectionStart = UNDEFINED;
        mTextSelectionEnd = UNDEFINED;
        mTextSelectionEnd = UNDEFINED;
        mInputType = InputType.TYPE_NULL;
        mInputType = InputType.TYPE_NULL;
        if (mBundle != null) {
        if (mExtras != null) {
            mBundle.clear();
            mExtras.clear();
        }
        }
        if (mRangeInfo != null) {
        if (mRangeInfo != null) {
            mRangeInfo.recycle();
            mRangeInfo.recycle();
@@ -2677,7 +2687,15 @@ public class AccessibilityNodeInfo implements Parcelable {


    /**
    /**
     * Class with information if a node is a collection. Use
     * Class with information if a node is a collection. Use
     * {@link CollectionInfo#obtain(int, int, boolean) to an instance.
     * {@link CollectionInfo#obtain(int, int, boolean)} to get an instance.
     * <p>
     * A collection of items has rows and columns and may be hierarchical.
     * For example, a horizontal list is a collection with one column, as
     * many rows as the list items, and is not hierarchical; A table is a
     * collection with several rows, several columns, and is not hierarchical;
     * A vertical tree is a hierarchical collection with one column and
     * as many rows as the first level children.
     * </p>
     */
     */
    public static final class CollectionInfo {
    public static final class CollectionInfo {
        private static final int MAX_POOL_SIZE = 20;
        private static final int MAX_POOL_SIZE = 20;
@@ -2685,54 +2703,54 @@ public class AccessibilityNodeInfo implements Parcelable {
        private static final SynchronizedPool<CollectionInfo> sPool =
        private static final SynchronizedPool<CollectionInfo> sPool =
                new SynchronizedPool<CollectionInfo>(MAX_POOL_SIZE);
                new SynchronizedPool<CollectionInfo>(MAX_POOL_SIZE);


        private int mHorizontalSize;
        private int mRowCount;
        private int mVerticalSize;
        private int mColumnCount;
        private boolean mHierarchical;
        private boolean mHierarchical;


        /**
        /**
         * Obtains a pooled instance.
         * Obtains a pooled instance.
         *
         *
         * @param horizontalSize The horizontal size.
         * @param rowCount The number of rows.
         * @param verticalSize The vertical size.
         * @param columnCount The number of columns.
         * @param hierarchical Whether the collection is hierarchical.
         * @param hierarchical Whether the collection is hierarchical.
         */
         */
        public static CollectionInfo obtain(int horizontalSize, int verticalSize,
        public static CollectionInfo obtain(int rowCount, int columnCount,
                boolean hierarchical) {
                boolean hierarchical) {
            CollectionInfo info = sPool.acquire();
            CollectionInfo info = sPool.acquire();
            return (info != null) ? info : new CollectionInfo(horizontalSize,
            return (info != null) ? info : new CollectionInfo(rowCount,
                    verticalSize, hierarchical);
                    columnCount, hierarchical);
        }
        }


        /**
        /**
         * Creates a new instance.
         * Creates a new instance.
         *
         *
         * @param horizontalSize The horizontal size.
         * @param rowCount The number of rows.
         * @param verticalSize The vertical size.
         * @param columnCount The number of columns.
         * @param hierarchical Whether the collection is hierarchical.
         * @param hierarchical Whether the collection is hierarchical.
         */
         */
        private CollectionInfo(int horizontalSize, int verticalSize,
        private CollectionInfo(int rowCount, int columnCount,
                boolean hierarchical) {
                boolean hierarchical) {
            mHorizontalSize = horizontalSize;
            mRowCount = rowCount;
            mVerticalSize = verticalSize;
            mColumnCount = columnCount;
            mHierarchical = hierarchical;
            mHierarchical = hierarchical;
        }
        }


        /**
        /**
         * Gets the horizontal size in terms of item positions.
         * Gets the number of rows.
         *
         *
         * @return The size.
         * @return The row count.
         */
         */
        public int getHorizontalSize() {
        public int getRowCount() {
            return mHorizontalSize;
            return mRowCount;
        }
        }


        /**
        /**
         * Gets the vertical size in terms of item positions.
         * Gets the number of columns.
         *
         *
         * @return The size.
         * @return The column count.
         */
         */
        public int getVerticalSize() {
        public int getColumnCount() {
            return mVerticalSize;
            return mColumnCount;
        }
        }


        /**
        /**
@@ -2753,15 +2771,23 @@ public class AccessibilityNodeInfo implements Parcelable {
        }
        }


        private void clear() {
        private void clear() {
            mHorizontalSize = 0;
            mRowCount = 0;
            mVerticalSize = 0;
            mColumnCount = 0;
            mHierarchical = false;
            mHierarchical = false;
        }
        }
    }
    }


    /**
    /**
     * Class with information if a node is a collection item. Use
     * Class with information if a node is a collection item. Use
     * {@link CollectionItemInfo#obtain(int, int, int, int, boolean) to get an instance.
     * {@link CollectionItemInfo#obtain(int, int, int, int, boolean)}
     * to get an instance.
     * <p>
     * A collection item is contained in a collection, it starts at
     * a given row and column in the collection, and spans one or
     * more rows and columns. For example, a header of two related
     * table columns starts at the first row and the first column,
     * spans one row and two columns.
     * </p>
     */
     */
    public static final class CollectionItemInfo {
    public static final class CollectionItemInfo {
        private static final int MAX_POOL_SIZE = 20;
        private static final int MAX_POOL_SIZE = 20;
@@ -2772,79 +2798,77 @@ public class AccessibilityNodeInfo implements Parcelable {
        /**
        /**
         * Obtains a pooled instance.
         * Obtains a pooled instance.
         *
         *
         * @param horizontalPosition The horizontal item position.
         * @param rowIndex The row index at which the item is located.
         * @param horizontalSpan The horizontal item span.
         * @param rowSpan The number of rows the item spans.
         * @param verticalPosition The vertical item position.
         * @param columnIndex The column index at which the item is located.
         * @param verticalSpan The vertical item span.
         * @param columnSpan The number of columns the item spans.
         * @param heading Whether the item is a heading.
         * @param heading Whether the item is a heading.
         */
         */
        public static CollectionItemInfo obtain(int horizontalPosition, int horizontalSpan,
        public static CollectionItemInfo obtain(int rowIndex, int rowSpan,
                int verticalPosition, int verticalSpan, boolean heading) {
                int columnIndex, int columnSpan, boolean heading) {
            CollectionItemInfo info = sPool.acquire();
            CollectionItemInfo info = sPool.acquire();
            return (info != null) ? info : new CollectionItemInfo(horizontalPosition,
            return (info != null) ? info : new CollectionItemInfo(rowIndex,
                    horizontalSpan, verticalPosition, verticalSpan, heading);
                    rowSpan, columnIndex, columnSpan, heading);
        }
        }


        private boolean mHeading;
        private boolean mHeading;
        private int mHorizontalPosition;
        private int mColumnIndex;
        private int mVerticalPosition;
        private int mRowIndex;
        private int mHorizontalSpan;
        private int mColumnSpan;
        private int mVerticalSpan;
        private int mRowSpan;


        /**
        /**
         * Creates a new instance.
         * Creates a new instance.
         *
         *
         * @param horizontalPosition The horizontal item position.
         * @param rowIndex The row index at which the item is located.
         * @param horizontalSpan The horizontal item span.
         * @param rowSpan The number of rows the item spans.
         * @param verticalPosition The vertical item position.
         * @param columnIndex The column index at which the item is located.
         * @param verticalSpan The vertical item span.
         * @param columnSpan The number of columns the item spans.
         * @param heading Whether the item is a heading.
         * @param heading Whether the item is a heading.
         */
         */
        private CollectionItemInfo(int horizontalPosition, int horizontalSpan,
        private CollectionItemInfo(int rowIndex, int rowSpan,
                int verticalPosition, int verticalSpan, boolean heading) {
                int columnIndex, int columnSpan, boolean heading) {
            mHorizontalPosition = horizontalPosition;
            mRowIndex = rowIndex;
            mHorizontalSpan = horizontalSpan;
            mRowSpan = rowSpan;
            mVerticalPosition = verticalPosition;
            mColumnIndex = columnIndex;
            mVerticalSpan = verticalSpan;
            mColumnSpan = columnSpan;
            mHeading = heading;
            mHeading = heading;
        }
        }


        /**
        /**
         * Gets the horizontal item position in the parent collection.
         * Gets the column index at which the item is located.
         *
         *
         * @return The position.
         * @return The column index.
         */
         */
        public int getHorizontalPosition() {
        public int getColumnIndex() {
            return mHorizontalPosition;
            return mColumnIndex;
        }
        }


        /**
        /**
         * Gets the vertical item position in the parent collection.
         * Gets the row index at which the item is located.
         *
         *
         * @return The position.
         * @return The row index.
         */
         */
        public int getVerticalPosition() {
        public int getRowIndex() {
            return mVerticalPosition;
            return mRowIndex;
        }
        }


        /**
        /**
         * Gets the horizontal span in terms of item positions
         * Gets the number of columns the item spans.
         * of the parent collection.
         *
         *
         * @return The span.
         * @return The column span.
         */
         */
        public int getHorizontalSpan() {
        public int getColumnSpan() {
            return mHorizontalSpan;
            return mColumnSpan;
        }
        }


        /**
        /**
         * Gets the vertical span in terms of item positions
         * Gets the number of rows the item spans.
         * of the parent collection.
         *
         *
         * @return The span.
         * @return The row span.
         */
         */
        public int getVerticalSpan() {
        public int getRowSpan() {
            return mVerticalSpan;
            return mRowSpan;
        }
        }


        /**
        /**
@@ -2866,10 +2890,10 @@ public class AccessibilityNodeInfo implements Parcelable {
        }
        }


        private void clear() {
        private void clear() {
            mHorizontalPosition = 0;
            mColumnIndex = 0;
            mHorizontalSpan = 0;
            mColumnSpan = 0;
            mVerticalPosition = 0;
            mRowIndex = 0;
            mVerticalSpan = 0;
            mRowSpan = 0;
            mHeading = false;
            mHeading = false;
        }
        }
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -234,7 +234,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
            @Override
            @Override
            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
                super.onInitializeAccessibilityNodeInfo(host, info);
                super.onInitializeAccessibilityNodeInfo(host, info);
                info.setOpensPopup(true);
                info.setCanOpenPopup(true);
            }
            }
        });
        });
        mExpandActivityOverflowButtonImage =
        mExpandActivityOverflowButtonImage =
+1 −1
Original line number Original line Diff line number Diff line
@@ -675,7 +675,7 @@ public class Spinner extends AbsSpinner implements OnClickListener {
        info.setClassName(Spinner.class.getName());
        info.setClassName(Spinner.class.getName());


        if (mAdapter != null) {
        if (mAdapter != null) {
            info.setOpensPopup(true);
            info.setCanOpenPopup(true);
        }
        }
    }
    }


+1 −1
Original line number Original line Diff line number Diff line
@@ -630,7 +630,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        @Override
        @Override
        public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
        public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
            super.onInitializeAccessibilityNodeInfo(info);
            super.onInitializeAccessibilityNodeInfo(info);
            info.setOpensPopup(true);
            info.setCanOpenPopup(true);
        }
        }
    }
    }


Loading