Android

По поводу Android Manifest и разрешений для приложения.

Всем привет!
В связи с углубленным изучением ОС Android возник вопрос, может ли разработчик приложения не указывать в Android Manifest (в разрешениях), к примеру, доступ к SD-карте или интернету, но при этом приложение будет использовать их в своей работе, не уведомляя об этом пользователя?
Или для того, чтобы использовать ту или иную функцию системы, приложению необходимо указать разрешения в манифесте, иначе оно не получит к ним доступ, даже если это прописано в основном коде?
Насколько я помню, то из-за отсутствия разрешения в манифесте приложение ВООБЩЕ не сможет его получить. Система будет автоматически каждый раз отказывать на запросы приложения предоставить ей разрешение.

то есть:

1. Разрешение есть в манифесте и приложение его потом в коде запрашивает:
Система показывает сообщение пользователю о том что приложение запрашивает разрешение на XXX

1.1. Пользователь дал согласие (всегда или только в этот раз), то все ОК.
1.2 Пользователь не дал согласие. Система может повторно спросить его дать разрешение и если и тогда откажется - запишет это разрешение в список запрещенных и больше приложение не получит к нему доступ (пока не разрешим его в настройках этого приложения в настройках системы)

2. Разрешение отсутствует в манифесте: при попытке приложения запросить разрешение, система автоматически дает отказ (ибо его нет в манифесте), а сообщение пользователю даже не показывается. Включить это разрешение в настройках приложения в настройках системы тоже не получится - его просто там не будет в списке разрешений
Влад Ким
Влад Ким
54 419
Лучший ответ
Мурод Курбонов Спасибо за ответ!
Но я имела в виду, может ли приложение вообще не запрашивать разрешение, например, на выход в интернет, но при этом иметь туда доступ, если это прописано в основном коде?
То есть может ли пользователь даже не знать, что его приложение, скажем, какой-нибудь фонарик без всяких разрешений, выходит в интернет?
Мурод Курбонов Я знаю, что приложению в некоторых случаях не нужно разрешение, если, скажем, переход по ссылке осуществляется через браузер или другое приложение (например, отослать заметку по мессенджеру или почте). Поэтому мне и стало интересно, может ли что-то подобное быть реализовано напрямую (по типу обмена данных с сервером без участия пользователя в этом процессе, например, автообновление), но при этом и без необходимости соответствующих разрешений. Информации в инете и мануалах по этой теме почти нет, вот и интересуюсь, может быть, кто-нибудь знает.
интернет в манифесте кажется надо указывать, а разрешение на него не надо

Начиная с Android 6.0 (уровень API 23), пользователь может утвердить или отклонить некоторые разрешения приложения во время выполнения. Но независимо от того, какую версию Android поддерживает ваше приложение, вы должны объявлять все запросы разрешений с помощью элемента в манифесте. Если разрешение предоставлено, приложение может использовать защищенные функции. В противном случае попытки получить доступ к этим функциям терпят неудачу.
Юрий Логвинов
Юрий Логвинов
74 422
Все разрешения нужно указывать в манифесте, иначе ваш "основной кода" просто не будет работать. Начиная с 6 версии ввели понятие "опасные разрешения", их еще нужно запрашивать у пользователя, но он может вам отказать.
Доступ в интернет не является "опасным", чтение SD является "опасным", но можно писать во внешнюю папку приложения без всяких разрешений через getExternalFilesDir(), но в 12 Андроиде вроде как это закроют (она еще тестируется).
Арман Нуртаев
Арман Нуртаев
39 908
Мда. Ну и гении. Их не слушай. Меня слушай. Всё зависит от compileSDK. Раньше можно было прописать разрешения в Манифесте и пользовать их без спроса. Без спроса, но написать обязан. Ща то же самое, только нужен спрос. Логика такая что разрешение обязано быть в манифесте, иначе у тебя компиля будет ругаться, либо ОС Андроида это дело заблочит
Юрий Логвинов ты как раз идиотик неадекватный))))