J'ai fini par créer un module d'accessibilité (juste pour Android actuellement, devra mettre en œuvre la même fonctionnalité sur iOS plus tard). étapes:
Créé AccessibilityModule.java:
public class AccessibilityModule extends ReactContextBaseJavaModule {
private final ReactApplicationContext mContext;
public AccessibilityModule(ReactApplicationContext reactContext) {
super(reactContext);
mContext = reactContext;
}
@Override
public String getName() {
return "A11yModule";
}
@ReactMethod
void announce(String message) {
final AccessibilityManager a11yManager = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
if (a11yManager == null || !a11yManager.isEnabled()) {
return;
}
final int eventType = AccessibilityEventCompat.TYPE_ANNOUNCEMENT;
final AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
event.getText().add(message);
event.setClassName(AccessibilityModule.class.getName());
event.setPackageName(mContext.getPackageName());
a11yManager.sendAccessibilityEvent(event);
}
}
Ensuite, dans ma classe ReactPackage, je me inscrire le module:
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new AccessibilityModule(reactContext));
return modules;
}
Ensuite, NativeModules à l'importation et l'utiliser en javascript:
import { NativeModules } from 'react-native'
const A11yModule = NativeModules.A11yModule; // this matches getName()
A11yModule.announce("Hello World");
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [À revoir] (/ review/low-quality-posts/17919121) – Robert
@Robert J'ai mis à jour ma réponse. –