#javascript #android #react-native #android-permissions
Вопрос:
Я использую https://www.npmjs.com/package/react-native-disable-battery-optimizations-android пакет для моего приложения React Native для Android. Этот пакет предоставляет метод OpenBatteryModal() для вызова всплывающего окна, чтобы получить разрешение на оптимизацию батареи ignore. Но в нем не указано, как получить статус предоставленного разрешения. Итак, мой вопрос: «Есть ли какой-нибудь способ узнать, какая опция выбрана во всплывающем окне разрешений, или есть ли в этом пакете какой-либо другой обходной путь для получения статуса предоставления? Я поражен этим в течение нескольких дней. Кроме использования этого пакета, помощи не так много.
Ответ №1:
Похоже, что в этой библиотеке ( RNDisableBatteryOptimizationsAndroid
) есть метод проверки состояния оптимизации батареи, он даже упоминается в их README при использовании. Я не уверен, что вы пробовали, но вот как вы можете проверить, было ли предоставлено разрешение с помощью их isBatteryOptimizationEnabled
API:
import RNDisableBatteryOptimizationsAndroid from 'react-native-disable-battery-optimizations-android';
RNDisableBatteryOptimizationsAndroid.isBatteryOptimizationEnabled().then((isEnabled)=>{
if(isEnabled){
RNDisableBatteryOptimizationsAndroid.openBatteryModal();
}
});
Вы не можете получить выбранный пользователем параметр напрямую, поэтому, если приведенного выше примера недостаточно, вы можете написать некоторую логику, чтобы получить статус, когда ваше приложение становится активным (используя react-native AppState
) после закрытия модала; поскольку модал — это новое действие, вы должны получать уведомления, когда ваша активностьснова становится активным. Оптимизируйте его так, чтобы вы проверяли статус только в том случае, если openBatteryModal
он был запрошен.
Комментарии:
1. AppState — это то, что я искал. Большое вам спасибо за ответ. Я могу добиться того, чего хочу, используя AppState.
2. На данный момент я обрабатываю получение ответа Deny / Allow через AppState. Но другая проблема заключается в устройствах Xiomi MIUI, сначала появляется всплывающее окно Разрешить / запретить, и как только мы даем разрешение во всплывающем окне, оно перенаправляет в настройки, чтобы выбрать опцию без ограничений. В этом сценарии я всегда получаю отказ в ответе, хотя пользователь дает «Без ограничений», поскольку после закрытия начального всплывающего окна мы получаем статус разрешения как не предоставленный. Есть ли какое-либо другое решение для обработки подобных сценариев?