#android #ionic-framework #ionic4
#Android #ionic-framework #ionic4
Вопрос:
Я использую Ionic 4, и все мои диагностические разрешения IOS работают..
Но на Android, если я запрашиваю доступ к чему-либо (например, к КАМЕРЕ). Он возвращает ответ DENIE_ALWAYS. Если я перехожу в настройки> настройки приложения> разрешения, это говорит о том, что приложению не нужны никакие разрешения. Я проверил, что разрешения существуют в androidManifest.xml . Но я не могу когда-либо запрашивать у пользователя разрешения.
Любая помощь по этому вопросу будет оценена.
Пример кода
this.diagnostic.getCameraAuthorizationStatus()
.then( async (status) => {
debugger;
if (status === this.diagnostic.permissionStatus.GRANTED
|| status === this.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE) {
this.appSettings.camera.enabled = true;
this.updateAppSettings();
} else if (status === this.diagnostic.permissionStatus.NOT_REQUESTED) {
this.diagnostic.requestCameraAuthorization()
.then((res) => {
// HERE IS ALWAYS DENIE_ALWAYS WITHOUT EVER PROMPTING USER
debugger;
if (res === this.diagnostic.permissionStatus.GRANTED
|| res === this.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE) {
this.appSettings.camera.enabled = true;
this.updateAppSettings();
} else {
this.appSettings.camera.enabled = false;
this.updateAppSettings();
}
});
Ответ №1:
Я, наконец, нашел ответ после нескольких часов поиска..
В разделе платформы> android>AndroidManifest.xml вы должны убедиться, что это включает в себя все ваши разрешения
<uses-permission android:name="android.permission.CAMERA" />
Но по какой-то причине этот AndroidManifest не был тем, который использовался в
платформы> android> приложение> src> главная> AndroidManifest.xml
И сборка также не обновляла этот файл. Итак, я скопировал правильный AndroidManifest.xml на этот путь, и он начал работать.
Это было намного сложнее, чем должно было быть.. Я не знаю, почему добавление и удаление платформы или перестройка не привели бы к обновлению этого манифеста..
Комментарии:
1. я попытался проверить папку. Но нет AndroidManifest.xml файл внутри платформы> android. Файл существует в platforms> android> app> src> main> AndroidManifest.xml Этот файл не содержит разрешения, но node_modules > cordova-android > bin> шаблоны> проект > AndroidManifest.xml содержит разрешение
2. @vbharath прошло несколько месяцев с тех пор, как я понял это.. Я просто помню, что это был кошмар. Все сводилось к тому, что разрешения не были в нужном месте в нужное время.
3. @caden311 Вы нашли причину, по которой разрешения не добавляются в файл манифеста?
4. @SanjaySharma это было довольно давно. Но, если я правильно помню, это был какой-то странный кварк. После удаления и повторного добавления на другой машине он, казалось, работал правильно. Я не знаю, как он изначально попал в это состояние.