Плагин Ionic Android спрашивает разрешение - не спрашивает разрешения

Я вызываю функцию ниже:

this.androidPermissions.requestPermission("ACCESS_FINE_LOCATION")
.then((data: any) {
if(data.hasPermission) {
    console.log("have permission");
   }
});

Но я не получаю всплывающее окно разрешения. Я пробовал использовать блок catch, но не вижу никакой ошибки.

Обновление 1: я попробовал этот ответ, но все еще не получаю всплывающие окна с разрешениями. https://stackoverflow.com/a/47650104/758373


person Noman    schedule 15.10.2018    source источник


Ответы (1)


Поэтому я думаю, что это может быть вызвано двумя вещами.

Первый: как вы используете разрешение в своем коде.

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