Appstate продолжает получать изменения в React Native для AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Appstate продолжает получать изменения в React Native для Android

Сообщение Anonymous »

Я работаю над собственным проектом React и получаю разрешения на определение местоположения. Кроме того, мне всегда приходится отслеживать разрешения на определение местоположения, например, если пользователь предоставил разрешения на доступ после установки приложения, а затем через некоторое время пользователь перешел к настройкам приложения в настройках устройства и отключил/отозвал разрешения. Опять же, как только приложение переходит из фонового режима на передний план, мне нужно проверить разрешение на основе этого. Необходимо показывать сообщения.
Итак, я использую Appstate. Но, как ни странно, в Android после установки приложения, если пользователь отклонил разрешение, установив флажок «Больше не показывать», состояние приложения продолжает меняться с фоновым и активным всегда.
Это постоянно.

Код: Выделить всё

componentDidMount = async () => {
AppState.addEventListener('change', this.handleAppStateChange);
};

componentWillUnmount() {
AppState.removeEventListener('change', this.handleAppStateChange);
Geolocation.clearWatch(this.watchID);
}

handleAppStateChange = async nextAppState => {
const {appState} = this.state;
console.log('nextAppState -->', nextAppState);
console.log('appState -->', appState);
if (appState === 'active') {
// do this
this.showLoader();
await this.requestAndroidLocationPermission();
} else if (appState === 'background') {
// do that
} else if (appState === 'inactive') {
// do that other thing
}

this.setState({appState: nextAppState});
};

requestAndroidLocationPermission = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
this.getLatitudeLongitude();
} else if (granted === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
this.hideLoader();
this.setState({
errorMessage: 'Location permission is denied',
isLoading: false,
});
} else {
this.hideLoader();
this.requestAndroidLocationPermission();
}
} catch (err) {
console.warn(err);
}
};
Печать продолжается (цикл) после того, как отказано в разрешении с помощью параметра «Больше не показывать»

Код: Выделить всё

appState --> active
nextAppState --> background
appState --> active
nextAppState --> background
appState --> active
nextAppState --> background
appState --> active
Это продолжается и никогда не прекращается.
Как с этим справиться? Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/588 ... in-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»