1. Входящие намерения — это намерения, запущенные другими приложениями, которые может обработать ваше приложение. Способ, которым вы защищаете компоненты своего приложения, которые должны обрабатывать входящие намерения, заключается в определении надлежащих атрибутов разрешений Android для этих компонентов приложения. Не имеет значения, был ли входящий запрос инициирован явным или неявным намерением. Пока приложение, вызывающее намерение, имеет разрешения, запрошенные обрабатывающим его компонентом, действие будет выполнено успешно, иначе оно завершится ошибкой. Таким образом, разрешения являются ключевым элементом защиты компонентов вашего приложения от входящих намерений вредоносных приложений.

2. На Android доступны различные типы уровней защиты разрешений. Они бывают нормальными, опасными, сигнатурными и особыми.

3. Обычные разрешения используются для доступа к функциям устройства с низким риском для конфиденциальности пользователя или других приложений. Эти обычные разрешения автоматически предоставляются любому приложению, которое запрашивает их в своих манифестах, и не требуют взаимодействия с пользователем. Мы редко будем определять настраиваемое разрешение на этом уровне защиты для компонентов приложения, поскольку любое приложение может получить его, просто определив это разрешение в своем манифесте. Примером этого может быть разрешение, необходимое приложению для доступа в Интернет.

4. Опасные разрешения используются для защиты функций, которые разрешают доступ к конфиденциальным данным пользователя или функциям устройства. Чтобы приложение получило опасное разрешение, оно должно запросить то же самое у платформы, которая показывает диалоговое окно с запросом явного контента от пользователя. Единственный способ получить эти разрешения — через взаимодействие с пользователем. Это самый полезный уровень прогнозирования для настраиваемых разрешений, определенных для защиты компонентов вашего приложения от намерений. Примером этого является разрешение камеры на доступ к датчику камеры на устройстве.

5. Разрешения для подписи обычно представляют собой настраиваемые разрешения, которые должны использоваться между приложениями одного разработчика и подписаны с использованием одного и того же сертификата. Поскольку они подписаны одним и тем же сертификатом, они автоматически предоставляются во время установки, если сертификаты совпадают. Они используются, когда у разработчика приложения может быть несколько приложений на устройстве, которые хотят использовать каждый из этих компонентов, но не хотят предоставлять их другим приложениям.

6. Специальные разрешения используются для защиты функций, которые могут повлиять на работу пользователя на устройстве в целом. Обычно это системные разрешения, и приложения должны использовать их очень редко. Они используются через системные намерения, и система контролирует весь UX для отображения предупреждений пользователю и объяснения последствий предоставления разрешения. Любые разрешения, которые позволяют приложению изменять настройки устройства, являются специальными разрешениями.

7. Пример-

Рассмотрим простое приложение «Контакты», в котором вы можете просматривать свои телефонные контакты и делиться ими.

а. Контент-провайдер без установленных разрешений. Следовательно, к нему может получить доступ любое приложение

Мы должны определить пользовательское разрешение, а затем применить разрешение в компоненте, используя android:permission.

б. Определение пользовательского разрешения и добавление в компонент поставщика контента.