diff --git a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js
index 9ff5fe0a8..b14d664ef 100644
--- a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js
+++ b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js
@@ -135,6 +135,15 @@ const AccessibilityInfo = {
UIManager.AccessibilityEventTypes.typeViewFocused,
);
},
+
+ /**
+ * Post a string to be announced by the screen reader.
+ *
+ * See http://facebook.github.io/react-native/docs/accessibilityinfo.html#announceforaccessibility
+ */
+ announceForAccessibility: function(announcement: string): void {
+ RCTAccessibilityInfo.announceForAccessibility(announcement);
+ },
};
module.exports = AccessibilityInfo;
diff --git a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js
index 002ae9678..78929e01d 100644
--- a/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js
+++ b/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js
@@ -210,8 +210,6 @@ const AccessibilityInfo = {
/**
* Post a string to be announced by the screen reader.
*
- * @platform ios
- *
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#announceforaccessibility
*/
announceForAccessibility: function(announcement: string): void {
diff --git a/RNTester/js/AccessibilityExample.js b/RNTester/js/AccessibilityExample.js
index 8bb29c3e2..01e442183 100644
--- a/RNTester/js/AccessibilityExample.js
+++ b/RNTester/js/AccessibilityExample.js
@@ -452,6 +452,22 @@ class ScreenReaderStatusExample extends React.Component<{}> {
}
}
+class AnnounceForAccessibility extends React.Component<{}> {
+ _handleOnPress = () =>
+ AccessibilityInfo.announceForAccessibility('Announcement Test');
+
+ render() {
+ return (
+
+
+
+ );
+ }
+}
+
exports.title = 'Accessibility';
exports.description = 'Examples of using Accessibility APIs.';
exports.examples = [
@@ -473,4 +489,10 @@ exports.examples = [
return ;
},
},
+ {
+ title: 'Check if the screen reader announces',
+ render(): React.Element {
+ return ;
+ },
+ },
];
diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java
index 899f3d0e3..04f288385 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java
@@ -16,6 +16,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
+import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import com.facebook.react.bridge.Callback;
@@ -170,4 +171,18 @@ public class AccessibilityInfoModule extends ReactContextBaseJavaModule
@Override
public void onHostDestroy() {
}
+
+ @ReactMethod
+ public void announceForAccessibility(String message) {
+ if (mAccessibilityManager == null || !mAccessibilityManager.isEnabled()) {
+ return;
+ }
+
+ AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ event.getText().add(message);
+ event.setClassName(AccessibilityInfoModule.class.getName());
+ event.setPackageName(getReactApplicationContext().getPackageName());
+
+ mAccessibilityManager.sendAccessibilityEvent(event);
+ }
}