- AccountManager
- Подменяем Runtime permissions в Android
- Runtime permission
- Это невозможно
- Что под капотом
- Разрешение GET_ACCOUNTS при использовании GCM – зачем это нужно?
- Подробнее о реализации поддержки GCM на Android-клиенте
- Тут уже писали об GCM. Для чего эта статья?
- Необходимые разрешения
- Изменяется ли код регистрации (registationId)?
- Как управлять разрешениями приложений
AccountManager
Иногда разработчик хочет отслеживать пользователя. Первый вариант, который приходит в голову — попросить его ввести какие-то данные о себе и сохранить их где-нибудь. Но просить пользователя повторять эту процедуру при покупке нового устройства не самая лучшая идея. Кроме того, вы не можете гарантировать уникальность данных. Второй вариант — запомнить идентификатор телефона. Но пользователи иногда пользуются двумя телефонами, планшетами и т.д. и тут одним идентификатором не обойдёшься. Опять проблема.
Третий вариант – использовать класс AccountManager. С разрешения пользователя, вы можете использовать AccountManager для извлечения имён учетных записей, которые пользователь хранит на устройстве. Имея полученную информацию, вы можете, например, автоматически заполнить форму с адресом электронной почты.
Само устройство может хранить несколько аккаунтов от разных сервисов. Вы можете отфильтровать результат по типам аккаунтов. Например, у Гугла аккаунт имеет тип «com.google», Twitter использует тип «com.twitter.android.auth.login».
Для извлечения информации требуется разрешение:
В приложении вы сначала получаете экземпляр AccountManager через метод get(), а затем можете вызвать список аккаунтов определённого типа через getAccountsByType().
Метод getAccountsByType() возвращает массив учётных записей. Если в массиве более одной учётной записи, то покажите пользователю диалоговое окно с запросом для выбора одного аккаунта.
Объект Account содержит имя учетной записи, для учетных записей Google – это адрес электронной почты, который вы можете использовать для автоматического заполнения полей или в качестве ключа в базе данных и т.д.
В других учётных записях в имени не обязательно может содержаться электронный адрес. Например, это может быть часть электронного адреса или просто имя пользователя.
На эмуляторе скорее всего нет никаких аккаунтов, поэтому лучше проверять на устройстве. В большинстве случаев на телефоне есть аккаунт для Гугла. В логах я проверил количество аккаунтов, а в текстовом поле вывел имя аккаунта, который оказался моим электронным адресом.
Метод getAccounts() выводит все учётные записи, которые есть на устройстве.
На моём устройстве оказалось три учётные записи. Чтобы понять, кому они принадлежат, я заменил account.name на account.toString() и получил следующий результат.
Теперь стало понятно.
Мы рассмотрели только базовый пример работы с AccountManager. На самом деле, у класса много других возможностей. Например, вы можете добавить новую учётную запись и управлять ею.
Источник
Подменяем Runtime permissions в Android
Здравствуйте, меня зовут Виталий.
Мне 25 лет, закончил магистратуру СПБГЭТУ «ЛЭТИ» в своем родном городе. Уже 10 лет занимаюсь программированием, из которых 4 пишу под Android. Автор многих Homebrew программ, известный под ником VITTACH, для Sony PlayStation Portable (PSP).
Сегодня я бы хотел обсудить с вами проблему безопасности мобильных приложений. Разработчики из Google постоянно улучшают Android, находя и исправляя уязвимости не без помощи обширного сообщества, собранного благодаря программе Android Security Rewards, о которой мы поговорим позже. Тем не менее, проблемы все еще остаются, и наша общая задача как коммьюнити сообщать о них, чтобы их своевременно исправляли.
Уязвимость о которой я буду говорить, относится к классу с Priority: P2 и Severity: S2, что согласно таблице в широком смысле означает:
Проблему, которую необходимо решить в разумные сроки;
Проблему, которая важна для большого процента пользователей и связана с основными функциями.
Runtime permission
Речь в статье пойдет о такой известной всем разработчикам вещи как Runtime permission, а именно – о возможности введения в заблуждение конечного пользователя путем демонстрации диалогового окна выдачи разрешения со своим текстом и иконкой поверх системного. Нетрудно догадаться, что подобный подход позволил бы разработчикам запрашивать у пользователя разрешение, скажем, к файловой системе, а по факту – к выдаче доступа к геопозиционированию, камере или чему-то еще.
Это невозможно
Не один раз задавался подобный вопрос на специализированных форумах, в частности на StackOverflow. Единственным правильным ответом было то, что это невозможно. И это действительно так: невозможно подменить текст в самом системном диалоге, но возможно его перекрыть своим.
Что под капотом
Runtime Permission впервые появились в Android 6.0 в ответ на потребность повышенного внимания в области выдачи dangerous-разрешений. Фактически основная идея состоит в том, чтобы взаимодействовать с пользователем при запросе разрешений через всплывающее окно. Поэтому теперь разрешения из списка dangerous необходимо запрашивать у пользователя как только они понадобятся приложению.
Источник
Разрешение GET_ACCOUNTS при использовании GCM – зачем это нужно?
У меня есть приложение с включенными Push-уведомлениями.
Я хочу понять причину, по которой нам нужно «GET_ACCOUNTS» (android.permission.GET_ACCOUNTS) при реализации GCM? Некоторые пользователи вызывают озабоченность этим разрешением. Я использовал это разрешение в манифесте, так как он был указан на официальном сайте здесь .
Насколько безопасно это разрешение? И если я удалю это, из моего манифеста, будут ли push-уведомления работать?
Он использует существующее соединение для служб Google. Для устройств с предустановкой 3.0 это требует, чтобы пользователи настраивали свою учетную запись Google на своих мобильных устройствах. Учетная запись Google не является обязательным требованием для устройств под управлением Android 4.0.4 или выше.
Итак, это причина требования разрешения
Для чтения учетной записи Google.
Подробнее об этом обзоре GCM
Вход в учетную запись Google больше не требуется для работы GCM. Поэтому вам не нужно разрешение android.permission.GET_ACCOUNTS .
Если вы используете GCM API с GoogleCloudMessaging.register ), вам больше не нужно настраивать учетную запись Google на любой версии Android. Но если вы используете устаревшую библиотеку ( GCMRegistrar.register ), вам все равно нужна учетная запись Google в старых версиях (до ICS).
Подробнее см. На странице https://groups.google.com/forum/#!topic/android-gcm/ecG-RfH-Aso . Другой поток симуляторов: почему для входа в систему GCM для устройств ниже 4.0.4 ОС требуется учетная запись Google?
Для работы GCM больше не требуется разрешение GET_ACCOUNTS. Раньше это требовалось для регистрации в GCM, но недавнее обновление Play Services прекратило использование учетной записи Google даже на Froyo и Gingerbread. Если вы регистрируетесь в GCM с Play Services (т. Е. С помощью GoogleCloudMessaging.register), вам больше не нужно это разрешение на любую версию Android. Если вы используете устаревшую библиотеку (GCMRegistrar.register), вам все равно нужна учетная запись Google для версии 4.0.4, для которой требуется это разрешение.
Источник (размещен на android-gcm Google Group разработчиком Google):
Регистрация Froyo и Gingerbread осуществляется в GoogleServicesFramework, используя учетную запись Google для регистрации. Это привело к множеству ошибок auth для людей, где учетная запись не была в хорошем состоянии.
Начиная с ICS, GCM не зависит или использует учетную запись Google – вы можете использовать ее, прежде чем добавлять учетную запись или без каких-либо учетных записей.
Обновление «Службы обслуживания» реализует новую схему на всех устройствах, но, похоже, у небольшого числа устройств есть проблемы с этим, мы расследуем, но цифры намного ниже, чем у старой схемы.
Как говорили все остальные, GET_ACCOUNT необходим для устройств Android ниже 4.0.4.
Если вы похожи на меня и установили библиотеку, которая автоматически добавляет это разрешение, но вам это не нужно, вы можете сказать AndroidManifest удалить это разрешение, добавив разрешение с помощью tools:node=»remove» :
В вашем файле AndroidManifest.xml убедитесь, что атрибут xmlns:tools он определен в вашем теге manifest а затем добавьте его с remove набором:
Слово или предупреждение, что это никогда не работает для меня, но я знаю, что он работал на других. Если вы видите, что я могу делать неправильно, или у вас есть больше информации об этом, прокомментируйте!
* Редактировать: есть отчет об ошибке, открывающий эту функцию: https://bugzilla.xamarin.com/show_bug.cgi?id=48153
Когда вы используете
Compile ‘com.google.android.gms: play-services: 7.5.0’ Добавить файл build.gradle означает, что автоматически добавлено разрешение GET_ACCOUNT.
- Например, если разработчику нужно использовать только admob в проекте, укажите только это разрешение в файле build.gradle compile ‘com.google.android.gms: play-services-ads: 7.5.0’, если есть какие-либо другие разъяснения, см. Ссылку https: //developers.google.com/android/guides/setup
Я не думаю, что это на самом деле. Я протестировал его на новом устройстве Gingerbread с заводской перезагрузкой с новой учетной записью Gmail, и я мог получать сообщения GCM просто отлично без этого разрешения. Таким образом, документация НЕПРАВИЛЬНАЯ.
GET_ACCOUNT – проверить, синхронизирует ли пользователь аккаунт Google на мобильном устройстве и генерирует значение ключа для каждого пользователя (каждый аккаунт Google). Это необходимо, если на устройстве установлена версия ниже Android 4.0.4.
Источник
Подробнее о реализации поддержки GCM на Android-клиенте
Тут уже писали об GCM. Для чего эта статья?
Верно, писали. Буквально на этой неделе на Хабре была опубликована статья GCM – новый сервис Push-уведомлений от Google (если вы еще не знакомы с Google Cloud Messaging for Android, то советую прочитать её перед прочтением этой статьи, тем более в моей статье не описываются процесс создания проекта с GCM). Не знаю использовал её автор GCM в реальном приложении или нет, а вот мне пришлось. Поэтому-то я и хочу описать кое-что, чему не нашлось места в предыдущей статье, или что не было объяснено. Добавить это все комментарием в предыдущую статью, боюсь, невыполнимая задача.
Необходимые разрешения
- Тут всё ясно, без доступа к интернету GCM нам и не нужен
- GCM требует доступ к Google-аккаунту
По этому поводу в прошлой теме даже был спор, но никто из участников не решил посмотреть в исходных код. Документация этот момент умалчивает, и лишь говорит, что возможно вы захотите захватить PowerManager.WakeLock . Так вот, если вы пользуетесь стандартной библиотекой GCM, то вам придется добавлять такое разрешение.
Вкратце механизм работы такой: наше приложение подписывается на получение широковещательных запросов. При получении запроса мы устанавливаем полученному Intent’у имя класса ( setClassName() ) в имя нашего сервиса расширяющего GCMBaseIntentService , затем захватываем WakeLock с флагом PowerManager.PARTIAL_WAKE_LOCK (не даем уснуть только CPU, экран и прочее спит спокойно), запускаем Intent как сервис, по выходу из onHandleIntent сервиса освобождаем WakeLock .
Не поверили и не стали добавлять это разрешение, и в итоге получаем вот такое исключение:
Создаем свое собственное разрешение и сами его запрашиваем. Это мы делаем для того, чтобы никто кроме нас не смог получать наши сообщения.
Примечание: если вы выставили minSdkVersion в 16 или выше (Jelly Bean и последующие версии), то это разрешение вам не нужно (года через 2, надеюсь, можно будет опускать).
Изменяется ли код регистрации (registationId)?
Рассмотрим код из приложения-примера:
Вроде бы других условий нет. Так что, не изменяется? Если перейти по этой ссылке: http://developer.android.com/intl/ru/guide/google/gcm/adv.html#reg-state, можно узнать что все-таки может измениться. Таких случая два:
- Обновление программы
- Создание резервной копии и восстановление из неё
Для проверки на обновление программы я написал небольшой класс-помощник. Может быть кому-нибудь пригодится:
Источник
Как управлять разрешениями приложений
Разрешения приложений — это определенный набор правил, которые система позволит выполнять приложению: В момент запуска или выполнения определенного действия, приложение может запросить у вас разрешение, к примеру, на доступ к контактам, камере, вашему местоположению и прочим функциям устройствам. До первого запуска права приложения ограничены от доступа к основным функциям и разделам системы Андроид, но они могут требоваться для правильного функционирования.
- com.android.vending.CHECK_LICENSE
Проверка лицензии приложения через Google Play.
com.android.vending.BILLING
Покупки в приложении.
com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser
Просмотр имени пользователя указанного в Youtube аккаунте устройства.
com.google.android.c2dm.permission.RECEIVE
Прием уведомлений, использует интернет.
android.permission-group.NETWORK
Доступ к интернету.
com.google.android.youtube.permission.C2D_MESSAGE
Прием push-сообщений или уведомлений, использует интернет.
com.google.android.googleapps.permission.GOOGLE_AUTH
Доступ ко всем сохраненным в системе аккаунтам Google (только имя пользователя), а также e-mail адресам.
android.permission-group.ACCOUNTS
Доступ ко всем сохраненным в системе аккаунтам (только имя пользователя), а также e-mail адресам.
com.google.android.googleapps.permission.GOOGLE_AUTH.youtube
Приложение использует YouTube, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.talk
Приложение использует Google Talk, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.ig
Приложение использует iGoogle, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.androidsecure
Приложение использует Android services, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.news
Приложение использует Google News, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.print
Приложение использует Google Book Search, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.writely
Приложение использует Google Docs, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.sierrasandbox
Приложение использует Google Checkout Sandbox, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.health
Приложение использует Google Health, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.speech
Приложение использует Google Voice Search, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.sierraqa
Приложение использует Google Checkout QA, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.blogger
Приложение использует сервис Google Blogger, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.knol
Приложение использует Knol, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.goanna_mobile
Приложение использует Google Task Services, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.groups2
Приложение использует Google Groups, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.sierra
Приложение использует Google Checkout (предположительно, для совершения покупок), используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.notebook
Приложение использует Google Notebook, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.speechpersonalization
Приложение использует Голосовой ввод (или запись звука), используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.wise
Приложение использует Google Spreadsheets, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.lh2
Приложение использует Picasa Web Albums, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.doraemon
Приложение использует Google Catalog, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.ah
Приложение использует Google App Engine, используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.orkut
Приложение использует Orkut (уже не существующая соц.сеть от Google), используя аккаунт сохраненный на устройстве.
com.google.android.googleapps.permission.GOOGLE_AUTH.android
Приложение использует Android Services, используя аккаунт сохраненный на устройстве.
com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL
Полный доступ ко всем голосовым сообщениям на устройстве, а так же их получение.
com.google.android.gms.permission.ACTIVITY_RECOGNITION
Позволяет приложение отсылать информацию о вашей активности (маршрут, скорость, дата).
android.permission.RETRIEVE_WINDOW_CONTENT
Разрешает приложению отсылать всю введенную на страницах информацию на сторонний сервер (Может использоваться злоумышленниками для хищения паролей!).
android.permission-group.PERSONAL_INFO
Прямой доступ к вашей информации, хранящейся в устройстве (Используется для сбора статистики разработчиками).
android.permission.ACCESS_CHECKIN_PROPERTIES
Позволяет приложению читать и записывать данные в базу данных аккаунта Google (Используется только в google приложениях).
android.permission.ACCESS_COARSE_LOCATION
Приложение определяет примерное местоположение (город) устройства по координатам сети и Wi-fi точкам.
android.permission.ACCESS_FINE_LOCATION
Приложение определяет точное местоположение устройства по координатам сети и Wi-fi точкам.
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
Приложение определяет местоположение любыми доступными способами, включая GPS.
android.permission.ACCESS_MOCK_LOCATION
Позволяет приложение использовать фиктивное местоположение.
android.permission.ACCESS_NETWORK_STATE
Доступ к информации о сети.
android.permission.ACCESS_SURFACE_FLINGER
Разрешение приложению использовать SurfaceFlinger инструментарий (используется только приложениями Google!).
android.permission.ACCESS_WIFI_STATE
Доступ к информации о сети Wi-Fi.
android.permission.ACCOUNT_MANAGER
Позволяет приложению считывать идентификатор аккаунта устройства (используется только приложениями Google!).
com.android.voicemail.permission.ADD_VOICEMAIL
Приложение может добавлять голосовые вызовы в систему.
android.permission.AUTHENTICATE_ACCOUNTS
Приложение может создавать и редактировать аккаунт Google, в том числе и создавать новые.
android.permission.BATTERY_STATS
Приложение собирает статистику о заряде батареи.
android.permission.BIND_ACCESSIBILITY_SERVICE
Проверка привязки устройства к приложению.
android.permission.BIND_APPWIDGET
Доступ к управлению встроенными виджетами Google.
android.permission.BIND_DEVICE_ADMIN
Must be required by device administration receiver, to ensure that only the system can interact with it.
android.permission.BIND_DREAM_SERVICE
Must be required by an DreamService, to ensure that only the system can bind to it.
android.permission.BIND_INPUT_METHOD
Must be required by an InputMethodService, to ensure that only the system can bind to it.
android.permission.BIND_NFC_SERVICE
Must be required by a HostApduService or OffHostApduService to ensure that only the system can bind to it.
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
Must be required by an NotificationListenerService, to ensure that only the system can bind to it.
android.permission.BIND_PRINT_SERVICE
Must be required by a PrintService, to ensure that only the system can bind to it.
android.permission.BIND_REMOTEVIEWS
Must be required by a RemoteViewsService, to ensure that only the system can bind to it.
android.permission.BIND_TEXT_SERVICE
Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it.
android.permission.BIND_TV_INPUT
Must be required by a TvInputService to ensure that only the system can bind to it.
android.permission.BIND_VOICE_INTERACTION
Must be required by a VoiceInteractionService, to ensure that only the system can bind to it.
android.permission.BIND_VPN_SERVICE
Must be required by a VpnService, to ensure that only the system can bind to it.
android.permission.BIND_WALLPAPER
Must be required by a WallpaperService, to ensure that only the system can bind to it.
android.permission.BLUETOOTH
Доступ к Bluetooth сопряженным устройствам.
android.permission.BLUETOOTH_ADMIN
Доступ к Bluetooth, с возможностью поиска и сопряжения устройств.
android.permission.BLUETOOTH_PRIVILEGED
Доступ к Bluetooth сопряжению, без участия пользователя, открывает доступ приложению к приему вызовов и смс (используется только приложениями Google!).
android.permission.BODY_SENSORS
Доступ к сенсорам устройства: для считывания пульса, давления итп.
android.permission.BRICK
Позволяет приложению включать/выключать устройство (опасно!)
android.permission.BROADCAST_PACKAGE_REMOVED
После удаления оповещает разработчика об этом.
android.permission.BROADCAST_SMS
Позволяет приложению отображать информацию об SMS получателе.
android.permission.BROADCAST_STICKY
Allows an application to broadcast sticky intents. These are broadcasts whose data is held by the system after being finished, so that clients can quickly retrieve that data without having to wait for the next broadcast.
android.permission.BROADCAST_WAP_PUSH
Позволяет уведомлять о получении WAP-PUSH сообщений или уведомлений.
android.permission.CALL_PHONE
Позволяет приложению совершать телефонные звонки, в обход стандартной звонилке.
android.permission.CALL_PRIVILEGED
Позволяет приложению совершать любые телефонные звонки (включая SOS, экстренные службы итп), в обход стандартной звонилке.
android.permission.CAMERA
Доступ к камере.
android.permission.CAPTURE_AUDIO_OUTPUT
Позволяет приложению записывать звук.
android.permission.CAPTURE_SECURE_VIDEO_OUTPUT
Разрешение совершать захват видео в безопасном режиме.
android.permission.CAPTURE_VIDEO_OUTPUT
Разрешение совершать захват видео.
android.permission.CHANGE_COMPONENT_ENABLED_STATE
Изменение компонентов других приложений.
android.permission.CHANGE_CONFIGURATION
Изменение конфигурации устройства, например геолокация.
android.permission.CHANGE_NETWORK_STATE
Изменение режимов работы сети.
android.permission.CHANGE_WIFI_MULTICAST_STATE
Включает режим Wi-fi Multicast, что позволяет обнаруживать устройства в одной сети, даже если они подключены к роутеру через кабель.
android.permission.CHANGE_WIFI_STATE
Изменение режимов работы wi-fi.
android.permission.CLEAR_APP_CACHE
Очистка кэша установленных на устройстве приложений.
android.permission.CLEAR_APP_USER_DATA
Очистка пользовательских данных и настроек (опасно!).
android.permission.CONTROL_LOCATION_UPDATES
Включение/отключение приема дополнительной информации с Radio сигнала.
android.permission.DELETE_CACHE_FILES
Разрешение приложению удалять свой кэш.
android.permission.DELETE_PACKAGES
Позволяет приложению удалять пакеты данных.
android.permission.DEVICE_POWER
Разрешение на low-level доступ к управлению питанием устройства.
android.permission.DIAGNOSTIC
Доступ к ресурсам RW диагностики.
android.permission.DISABLE_KEYGUARD
Разрешение на замену стандартного экрана блокировки (локскрин).
android.permission.DUMP
Разрешение на получение дампа системных сервисов.
android.permission.EXPAND_STATUS_BAR
Разрешение на уменьшение/увеличение статус-бара.
android.permission.FACTORY_TEST
Разрешение к Factory Test режиму.
android.permission.FLASHLIGHT
Разрешение на использование вспышки.
android.permission.FORCE_BACK
Разрешение на фоновую активность.
android.permission.GET_ACCOUNTS
Доступ к списку аккаунтов в Accounts Services.
android.permission.GET_PACKAGE_SIZE
Разрешение на определение размера приложений.
android.permission.GET_TASKS
Разрешение на считывание информации о всех запущенных приложениях.
android.permission.GET_TOP_ACTIVITY_INFO
Разрешение на считывание информации о активных приложениях.
android.permission.GLOBAL_SEARCH
Разрешение на наличие приложения в глобальном поиске.
android.permission.HARDWARE_TEST
Доступ к периферийным устройствам, для теста железа устройства.
android.permission.INJECT_EVENTS
Позволяет приложению имитировать мышь, трекбол, клавиатуру итп.
android.permission.INSTALL_LOCATION_PROVIDER
Allows an application to install a location provider into the Location Manager. Not for use by third-party applications.
Разрешение на установку других приложений
Разрешение на создание ярлыка на рабочем столе.
android.permission.INTERNAL_SYSTEM_WINDOW
Разрешение на открытие системных окон.
android.permission.INTERNET
Разрешает приложению изменять IP адрес и номер порта для присоединения к интернету.
android.permission.KILL_BACKGROUND_PROCESSES
Разрешает приложению закрывать фоновые процессы.
android.permission.LOCATION_HARDWARE
Разрешение на использование навигационных API, для взаимодействия с модулем GPS.
android.permission.MANAGE_ACCOUNTS
Разрешение приложению изменять список аккаунтов в AccountManager.
android.permission.MANAGE_APP_TOKENS
Разрешение приложению создавать/удалять/изменять токены приложений (используется для авторизации).
android.permission.MANAGE_DOCUMENTS
Разрешение редактировать документы, обычно запрашивается текстовыми редакторами.
android.permission.MEDIA_CONTENT_CONTROL
Разрешает управлять воспроизведением аудио/видео потока.
android.permission.MODIFY_AUDIO_SETTINGS
Разрешение на управление глобальными настройками звука.
android.permission.MODIFY_PHONE_STATE
Разрешает приложению контроль над компонентами устройства: включать/выключать устройство и компоненты, управление уведомлениями (используется только в официальных приложениях производителей устройств).
android.permission.MOUNT_FORMAT_FILESYSTEMS
Разрешает форматировать файловую систему
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
Разрешает перенос файловой системы на съемный носитель.
android.permission.NFC
Разрешает включение и выключение устройства, а также другие операции через NFC.
android.permission.PERSISTENT_ACTIVITY
Разрешает резервировать оперативную память под приложение, позволяя ему работать в фоновом режиме.
android.permission.PROCESS_OUTGOING_CALLS
Разрешает приложению получать телефонный номер с исходящего звонка, причем со всеми переадресациями.
android.permission.READ_CALENDAR
Разрешение на доступ к календарю.
android.permission.READ_CALL_LOG
Разрешает чтение журнала звонков.
android.permission.READ_CONTACTS
Разрешает чтение пользовательских данных из книги контактов.
android.permission.READ_EXTERNAL_STORAGE
Разрешает приложению чтение из внешней памяти.
android.permission.READ_FRAME_BUFFER
Разрешает приложению делать скриншоты и дает доступ к Frame Bufer.
com.android.browser.permission.READ_HISTORY_BOOKMARKS
Разрешает чтение истории браузера и закладок.
android.permission.READ_INPUT_STATE
Разрешает определение языка клавиатуры и доступные раскладки языков.
android.permission.READ_LOGS
Разрешает чтение low-level системный лог файлов (Это приложение может получить доступ к вашим личным данным).
android.permission.READ_PHONE_STATE
Разрешает чтение информации о настройках и компонентах устройства.
android.permission.READ_PROFILE
Разрешает чтение профиля пользователя (используется для релевантного показа рекламы).
android.permission.READ_SMS
Разрешает чтение СМС сообщений.
android.permission.READ_SOCIAL_STREAM
Разрешает чтение социальной активности.
android.permission.READ_SYNC_SETTINGS
Разрешает чтение настроек синхронизации.
android.permission.READ_SYNC_STATS
Разрешает чтение истории синхронизаций.
android.permission.READ_USER_DICTIONARY
Разрешает чтение пользовательского словаря.
com.android.voicemail.permission.READ_VOICEMAIL
Разрешает чтение голосовой почты.
android.permission.REBOOT
Разрешает перезагрузку устройства.
android.permission.ACTION_BOOT_COMPLETED
Разрешает автозапуск или иные действия связанные с приложением и его деятельностью сразу после запуска/перезагрузки устройства.
android.permission.RECEIVE_BOOT_COMPLETED
Разрешает считывание прогресса запуска устройства, может замедлять работу системы.
android.permission.RECEIVE_MMS
Разрешает чтение и обработку MMS сообщений.
android.permission.RECEIVE_SMS
Разрешает чтение и обработку SMS сообщений.
android.permission.RECEIVE_WAP_PUSH
Разрешает чтение и обработку WAP сообщений.
android.permission.RECORD_AUDIO
Разрешает приложение записывать звук с микрофона.
android.permission.REORDER_TASKS
Разрешает приложению менять z-order (порядок наложения элементов) в менеджере задач.
android.permission.RESTART_PACKAGES
Разрешает приложению закрывать фоновые процессы.
android.permission.SEND_RESPOND_VIA_MESSAGE
Разрешает принимать и отправлять СМС сообщения с кодами приложений/подтверждений без действий пользователя.
android.permission.SEND_SMS
Разрешает приложению отсылать СМС сообщения.
android.permission.SET_ACTIVITY_WATCHER
Позволяет приложению отслеживать и контролировать глобальную загрузку приложений и процессов, при запуске устройства.
com.android.alarm.permission.SET_ALARM
Разрешает приложению устанавливать будильник или таймер.
android.permission.SET_ALWAYS_FINISH
Разрешает приложению решать выгружать фоновые процессы или нет.
android.permission.SET_ANIMATION_SCALE
Разрешает изменение анимации оболочки.
android.permission.SET_DEBUG_APP
Разрешает конфигурирование устройства для дебаггинга.
android.permission.SET_ORIENTATION
Разрешает чтение текущего положения экрана (вертикальный/горизонтальный).
android.permission.SET_POINTER_SPEED
Разрешает чтение скорости кликов по экрану, а также скорости скролла страниц.
android.permission.SET_PROCESS_LIMIT
Разрешает приложению назначать максимальное количество активных процессов.
android.permission.SET_TIME
Разрешает приложению менять и устанавливать системное время.
android.permission.SET_TIME_ZONE
Разрешает приложению менять часовой пояс.
android.permission.SET_WALLPAPER
Разрешает приложению менять обои.
android.permission.SET_WALLPAPER_HINTS
Разрешает приложение использование эффектов на обоях (используется лаунчерами).
android.permission.SIGNAL_PERSISTENT_PROCESSES
Разрешает приложению игнорировать защиту от остановки фоновых процессов.
android.permission.STATUS_BAR
Разрешает полный контроль над статус-баром.
android.permission.SUBSCRIBED_FEEDS_READ
Разрешает чтение ленты подписок.
android.permission.SUBSCRIBED_FEEDS_WRITE
Разрешает изменение ленты подписок.
android.permission.SYSTEM_ALERT_WINDOW
Разрешает вызов поверх всех приложений системных окон и уведомлений от приложения.
android.permission.TRANSMIT_IR
Разрешает использование ИК порта.
com.android.launcher.permission.UNINSTALL_SHORTCUT
Разрешает удалять ярлыки в оболочке.
android.permission.UPDATE_DEVICE_STATS
Разрешает вносить обновления в статистику устройства.
android.permission.USE_CREDENTIALS
Разрешает запрос токена авторизации.
android.permission.USE_SIP
Разрешает использование SIP протокола передачи данных.
android.permission.VIBRATE
Разрешает доступ к вибратору устройства.
android.permission.WAKE_LOCK
Разрешает приложению работать даже после выключения экрана.
android.permission.WRITE_APN_SETTINGS
Разрешает приложению изменять APN точку доступа.
android.permission.WRITE_CALENDAR
Разрешает только запись событий в календарь.
android.permission.WRITE_CALL_LOG
Разрешает только запись в историю звонков.
android.permission.WRITE_CONTACTS
Разрешает только запись в книгу контактов.
android.permission.WRITE_EXTERNAL_STORAGE
Разрешает запись на карту памяти (используется в приложениях с кэшем).
com.google.android.providers.gsf.permission.READ_GSERVICES
Разрешает чтению конфигурации Google Services.
android.permission.WRITE_GSERVICES
Разрешает изменение карты Google Services.
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
Разрешает только запись в историю браузера и закладки.
android.permission.WRITE_PROFILE
Разрешает только запись в профиль пользователя.
android.permission.WRITE_SECURE_SETTINGS
Разрешает изменять настройки безопасности системы.
android.permission.WRITE_SETTINGS
Разрешает приложению изменять системные настройки.
android.permission.WRITE_SMS
Разрешает приложению писать/присылать SMS сообщения
android.permission.WRITE_SOCIAL_STREAM
Разрешает только запись в ленту новостей.
android.permission.WRITE_SYNC_SETTINGS
Разрешает запись в настройки синхронизации.
android.permission.WRITE_USER_DICTIONARY
Разрешает добавлять новые слова в пользовательский словарь.
com.android.voicemail.permission.WRITE_VOICEMAIL
Разрешает приложению изменять или удалять голосовые сообщения.
Разрешает приложению запрос на проверку наличия Root-прав
Чтобы управлять разрешениями в данной версии ОС, вам потребуется программа AppOps.
Источник