Получение фактической блокировки ориентации устройства в React Native (expo)

#reactjs #react-native #expo #screen-orientation

#reactjs #react-native #expo #ориентация экрана

Вопрос:

Я не хочу показывать сообщение пользователю, если его ориентация устройства заблокирована, и у меня возникают проблемы с доступом к этой информации.

Я пытался использовать getOrientationLockAsync, но это возвращает только блокировку ориентации приложений. Вот код, который я нам

 import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import * as ScreenOrientation from 'expo-screen-orientation';

export default function App() {
  ScreenOrientation.getOrientationLockAsync().then((res) => {
    console.log('getOrientationLockAsync', res)
  })
  
  return (
    <View style={styles.container}>
      <Text>Open up App.js to start working on your app!</Text>
      <StatusBar style="auto" />
    </View>
  );
}
 

И это всегда возвращает то, что установлено в app.json независимо от того, устанавливаю ли я ориентацию устройства на книжную или альбомную.

Если мой app.json выглядит так:

 {
  "expo": {
    "name": "expo-ex",
    "slug": "expo-ex",
    "version": "1.0.0",
    "orientation": "default",
    ...
  }
}
 

getOrientationLockAsync всегда будет возвращать ‘0’, что соответствует ‘OrientationLock.ПО УМОЛЧАНИЮ ‘даже если я заблокирую ориентацию устройства на альбомную.

Я также попробовал функцию screenOrientation.getPlatformOrientationLockAsync(), но это также не помогает.

Устройство, которое я использую, — Samsung s10e, а версия SDK expo равна 40.