Спросите разрешение на местоположение снова после того, как пользователь скажет нет в первый раз - PullRequest
0 голосов
/ 02 сентября 2018

Я просматриваю документацию для expo, но кажется, что их пример только вызывает диалоговое окно для запроса разрешений на размещение один раз. Что я могу сделать, чтобы снова вызвать диалоговое окно, если пользователь говорит нет? Все, что я получаю, это в консоли при повторных попытках запустить диалоговое окно:

Possible Unhandled Promise Rejection (id: 0):
Error: Location permission not granted

Вот мой код:

class PermissionsScreen extends React.Component {
  constructor(props) {
    super(props);
  }

    async getLocationAsync() {
        const { Location, Permissions } = Expo;
        const { status } = await Permissions.askAsync(Permissions.LOCATION);
        if (status === 'granted') {
            return Location.getCurrentPositionAsync({enableHighAccuracy: true});
        } else {
            throw new Error('Location permission not granted');
        }
    }

  render() {
    let s = styles;

    return (
      <View style={s.contain}>
        <Text>I'm going to ask for permissions</Text>
        <TouchableOpacity onPress={() => {
            this.getLocationAsync();
        }}>
          <View style={s.button}>
            <Text style={s.buttonText}>Got it</Text>
          </View>
        </TouchableOpacity>
      </View>
    );
  }
}

1 Ответ

0 голосов
/ 02 сентября 2018

У вас есть отдельное приложение на SDK 29? если да, вы можете посмотреть эту ветку на Expo GitHub.

В этой версии есть ошибка, и вот обходной путь:

в proguard-rules.pro добавить это

-keepclassmembers class * {
  @expo.core.interfaces.ExpoProp *;
}
-keepclassmembers class * {
  @expo.core.interfaces.ExpoMethod *;
}

-keepclassmembers class * {
  @**.expo.core.interfaces.ExpoProp *;
}
-keepclassmembers class * {
  @**.expo.core.interfaces.ExpoMethod *;
}

Затем в app/build.gradle

buildTypes {
  // ...

  release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    // ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...