Поэтому я думаю, что это может быть вызвано двумя вещами.
Первый: как вы используете разрешение в своем коде.
Android 26 и выше: из-за изменений Android 26 в обработке разрешений (разрешения запрашиваются во время использования, а не во время выполнения), если ваше приложение не включает в себя какие-либо функции (например, другие надстройки Ionic Native), которые используют определенное разрешение, тогда requestPermission() и requestPermissions() будут разрешены немедленно, и пользователю не будет показано приглашение. Таким образом, вы должны включить функцию, использующую функцию, которую вы хотели бы использовать, прежде чем запрашивать разрешение на нее.
Насколько я понимаю, это не будет поймано в вашем заявлении catch
, потому что ничего не поймано, ошибки как таковой не было. Это может быть уловлено в вашем операторе then
, но также вероятно, что это не так. Попробуйте написать оператор, чтобы узнать, является ли data: any
нулевым. Некоторые плагины отправляют обратный вызов при отмене, а некоторые нет. Все на усмотрение разработчика.
Кроме того, я считаю, что вы запрашиваете разрешение неправильно.
Изменить это
this.androidPermissions.requestPermission("ACCESS_FINE_LOCATION")
.then((data: any) {
if(data.hasPermission) {
console.log("have permission");
}
});
К этому:
this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION).then((data:any) => {
if(data.hasPermission) {
console.log("have permission");
}
});
person
Jordan Benge
schedule
24.10.2018