Skip to content

Commit 09f17a4

Browse files
adkenyonfacebook-github-bot
authored andcommitted
AccessibilityInfo.announceForAccessibility (facebook#24746)
Summary: AccessibilityInfo.announceForAccessibility is currently only available on iOS. I've added the Android specific implementation, updated RNTester, and the documentation. [Android] [Added] - Added AccessibilityInfo.announceForAccessibility for Android [General] [Added] - RNTester example for AccessibilityInfo.announceForAccessibility Pull Request resolved: facebook#24746 Differential Revision: D15258054 Pulled By: cpojer fbshipit-source-id: 3e057a5c32b28e30ea2ee74a18854b012cd2dbfd
1 parent 9261035 commit 09f17a4

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,15 @@ const AccessibilityInfo = {
135135
UIManager.AccessibilityEventTypes.typeViewFocused,
136136
);
137137
},
138+
139+
/**
140+
* Post a string to be announced by the screen reader.
141+
*
142+
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#announceforaccessibility
143+
*/
144+
announceForAccessibility: function(announcement: string): void {
145+
RCTAccessibilityInfo.announceForAccessibility(announcement);
146+
},
138147
};
139148

140149
module.exports = AccessibilityInfo;

Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,6 @@ const AccessibilityInfo = {
210210
/**
211211
* Post a string to be announced by the screen reader.
212212
*
213-
* @platform ios
214-
*
215213
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#announceforaccessibility
216214
*/
217215
announceForAccessibility: function(announcement: string): void {

RNTester/js/AccessibilityExample.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,22 @@ class ScreenReaderStatusExample extends React.Component<{}> {
452452
}
453453
}
454454

455+
class AnnounceForAccessibility extends React.Component<{}> {
456+
_handleOnPress = () =>
457+
AccessibilityInfo.announceForAccessibility('Announcement Test');
458+
459+
render() {
460+
return (
461+
<View>
462+
<Button
463+
onPress={this._handleOnPress}
464+
title="Announce for Accessibility"
465+
/>
466+
</View>
467+
);
468+
}
469+
}
470+
455471
exports.title = 'Accessibility';
456472
exports.description = 'Examples of using Accessibility APIs.';
457473
exports.examples = [
@@ -473,4 +489,10 @@ exports.examples = [
473489
return <ScreenReaderStatusExample />;
474490
},
475491
},
492+
{
493+
title: 'Check if the screen reader announces',
494+
render(): React.Element<typeof AnnounceForAccessibility> {
495+
return <AnnounceForAccessibility />;
496+
},
497+
},
476498
];

ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import android.os.Handler;
1717
import android.os.Looper;
1818
import android.provider.Settings;
19+
import android.view.accessibility.AccessibilityEvent;
1920
import android.view.accessibility.AccessibilityManager;
2021

2122
import com.facebook.react.bridge.Callback;
@@ -170,4 +171,18 @@ public void onCatalystInstanceDestroy() {
170171
@Override
171172
public void onHostDestroy() {
172173
}
174+
175+
@ReactMethod
176+
public void announceForAccessibility(String message) {
177+
if (mAccessibilityManager == null || !mAccessibilityManager.isEnabled()) {
178+
return;
179+
}
180+
181+
AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
182+
event.getText().add(message);
183+
event.setClassName(AccessibilityInfoModule.class.getName());
184+
event.setPackageName(getReactApplicationContext().getPackageName());
185+
186+
mAccessibilityManager.sendAccessibilityEvent(event);
187+
}
173188
}

0 commit comments

Comments
 (0)