mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-01-12 22:50:10 +08:00
AccessibilityInfo.announceForAccessibility (#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: https://github.com/facebook/react-native/pull/24746 Differential Revision: D15258054 Pulled By: cpojer fbshipit-source-id: 3e057a5c32b28e30ea2ee74a18854b012cd2dbfd
This commit is contained in:
committed by
Facebook Github Bot
parent
9261035c2b
commit
09f17a4e29
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -452,6 +452,22 @@ class ScreenReaderStatusExample extends React.Component<{}> {
|
||||
}
|
||||
}
|
||||
|
||||
class AnnounceForAccessibility extends React.Component<{}> {
|
||||
_handleOnPress = () =>
|
||||
AccessibilityInfo.announceForAccessibility('Announcement Test');
|
||||
|
||||
render() {
|
||||
return (
|
||||
<View>
|
||||
<Button
|
||||
onPress={this._handleOnPress}
|
||||
title="Announce for Accessibility"
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
exports.title = 'Accessibility';
|
||||
exports.description = 'Examples of using Accessibility APIs.';
|
||||
exports.examples = [
|
||||
@@ -473,4 +489,10 @@ exports.examples = [
|
||||
return <ScreenReaderStatusExample />;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Check if the screen reader announces',
|
||||
render(): React.Element<typeof AnnounceForAccessibility> {
|
||||
return <AnnounceForAccessibility />;
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user