Анализируем права, доступные APK-приложению
Вы скачали приложение с неизвестного сайта, и хотите знать, к чему у него будет доступ после установки? Допустим, не обрадует ли новенькая программа вас отправкой дорогущих сообщений на «короткий номер» за ваш, естественно, счёт? Это несложно, и мы сейчас разберемся в данном вопросе.
Итак, декомпилируем интересующий нас APK-файл. Подробнее об APK можно почитать в другой статье. Находим файл AndroidManifest.xml и открываем его с помощью Notepad++. Ниже приведен список строк, которые обеспечивают приложению те или иные права, с подробным их описанием.
ACCESS_CHECKIN_PROPERTIES – даёт доступ к чтению или записи значений в таблице свойств базы данных, чтобы обновлять вновь загруженные данные.
ACCESS_COARSE_LOCATION – позволяет приложению получать доступ к приблизительному местоположению посредством Cell-ID или Wi-Fi.
ACCESS_FINE_LOCATION – позволяет приложению получать точное местоположение посредством GPS-навигации.
ACCESS_LOCATION_EXTRA_COMMANDS – позволяет приложению получать дополнительные функции, связанные с местоположением.
ACCESS_MOCK_LOCATION – позволяет приложению создавать ненастоящее местоположение для своих целей или проверки.
ACCESS_NETWORK_STATE – позволяет приложению получать информацию про состояние сетей.
ACCESS_SURFACE_FLINGER – позволяет приложению использовать низкоуровневые функции SurfaceFlinger.
ACCESS_WIFI_STATE – позволяет приложению получать информацию о состоянии Wi-Fi сетей.
ACCOUNT_MANAGER – дает приложению доступ к AccountAuthenticators.
ADD_VOICEMAIL – позволяет приложению добавлять записи голосовой почты в систему.
AUTHENTICATE_ACCOUNTS – дает приложению возможность приложению выступать в качестве AccountAuthenticator для AccountManager
BATTERY_STATS – даёт приложению собирать статистику по аккумуляторной батарее.
BIND_APPWIDGET – даёт возможность приложению сообщить сервису AppWidget, какое приложение может получить доступ к данным в AppWidget.
BIND_DEVICE_ADMIN – запрашивается получателем администрирования, чтобы убедиться, что только система может с ним взаимодействовать.
BIND_INPUT_METHOD – запрашивается InputMethodService, чтобы убедиться, что только система может быть с ним связана.
BIND_REMOTEVIEWS – запрашивается RemoteViewService, чтобы убедиться, что только система может быть с ним связана.
BIND_TEXT_SERVICE — запрашивается TextService, чтобы убедиться, что только система может быть с ним связана.
BIND_VPN_SERVICE – запрашивается VpnService, чтобы убедиться, что только система может быть с ним связана.
BIND_WALLPAPER – запрашивается WallpaperService, чтобы убедиться, что только система может быть с ним связана.
BLUETOOTH – позволяет приложению подключаться к сопряженным Bluetooth-устройствам.
BLUETOOTH_ADMIN – позволяет приложению самостоятельно находить и сопрягаться с Bluetooth-устройствами.
BROADCAST_PACKAGE_REMOVED – позволяет приложению вещать уведомление о том, что пакет приложения был удален.
BROADCAST_SMS – позволяет приложению передавать отчет о доставке SMS-сообщения.
BROADCAST_STICKY – позволяет приложению передавать уведомление о заметках.
BROADCAST_WAP_PUSH – позволяет приложению передавать отчет о доставке при отправке данных посредством WAP.
CALL_PHONE – даёт приложению право инициировать телефонный звонок, минуя стандартный пользовательский интерфейс набора номера.
CALL_PRIVILEGED – позволяет приложению вызывать любой телефонный номер, в том числе номера экстренных служб, минуя стандартный пользовательский интерфейс набора номера.
CAMERA – даёт приложению доступ к камере устройства.
CHANGE_COMPONENT_ENABLED_STATE – позволяет приложению активировать или деактивировать компоненты других приложений.
CHANGE_CONFIGURATION – даёт приложению право изменять текущую конфигурацию, например местоположение.
CHANGE_NETWORK_STATE – позволяет приложению менять состояние подключения к сети.
CHANGE_WIFI_MULTICAST_STATE – даёт приложению право входить в режим Wi-Fi Multicast.
CHANGE_WIFI_STATE – позволяет приложению изменить состояние Wi-Fi подключения.
CLEAR_APP_CACHE – даёт приложению право очищать кэш всех установленных на устройстве приложений.
CLEAR_APP_USER_DATA – даёт приложению право очистить пользовательские данные, связанные с приложениями.
CONTROL_LOCATION_UPDATES – позволяет приложению включать или выключать уведомление об обновлении местоположения.
DELETE_CACHE_FILES – даёт право приложению удалять файлы кэша.
DELETE_PACKAGES – позволяет удалять пакеты.
DEVICE_POWER – даёт приложению низкоуровневый доступ к управлению питанием устройства.
DIAGNOSTIC – позволяет приложению проводить диагностику системных ресурсов.
DISABLE_KEYGUARD – позволяет приложению самостоятельно отключать блокировку клавиатуры.
DUMP – даёт приложению право получать дамп информации о системных службах.
EXPAND_STATUS_BAR – позволяет приложению сворачивать или разворачивать строку состояния.
FACTORY_TEST – позволяет приложению запускаться как тестовое от производителя, с Root-доступом.
FLASHLIGHT – даёт приложению доступ к вспышке камеры.
FORCE_BACK – позволяет приложению форсировать команду «Назад».
GET_ACCOUNTS – даёт приложению доступ к списку учётных записей в Accounts Service.
GET_PACKAGE_SIZE – даёт приложению право узнавать занимаемое любым пакетом место.
GET_TASKS – даёт право приложению получать информацию о запущенных сейчас или недавно приложениях и сервисах.
GLOBAL_SEARCH – данное разрешение может использоваться контент-провайдерами для того, что глобальная поисковая система получила доступ к их данным.
HARDWARE_TEST – даёт приложению доступ к аппаратной периферии.
INJECT_EVENTS – позволяет приложению вставлять события по вводу (в том числе нажатие клавиш, касания или движение трекбола) в общий поток событий для любого окна.
INSTALL_LOCATION_PROVIDER – позволяет приложению устанавливать провайдера местоположения в Location Manager.
INSTALL_PACKAGES – даёт приложению право устанавливать пакеты.
INTERNAL_SYSTEM_WINDOW – даёт приложению право открывать окна, которые используются системным пользовательским интерфейсом.
KILL_BACKGROUND_PROCESSES – даёт право вызывать killBackgroundProcesses (String).
MANAGE_ACCOUNTS – позволяет управлять списком учетных записей в Account Manager
MANAGE_APP_TOKENS – позволяет приложению управлять (создавать, удалять, сортировать) списком приложений в менеджере окон.
MODIFY_AUDIO_SETTINGS — даёт права приложению изменять глобальные звуковые настройки.
MODIFY_PHONE_STATE – позволяет изменять состояние телефонной части: питание, mmi и т.д.
MOUNT_FORMAT_FILESYSTEMS – даёт права форматировать файловые системы съемных накопителей.
MOUNT_UNMOUNT_FILESYSTEMS – даёт права монтировать и демонтировать файловые системы съемных накопителей.
NFC – даёт право приложениям выполнять операции ввода-вывода посредством NFC.
PERSISTENT_ACTIVITY – даёт право делать активность приложения постоянной. Внимание, данный функционал будет убран в будущем, и уже сейчас является неактуальным.
PROCESS_OUTGOING_CALLS – даёт право приложению анализировать, изменять или отменять исходящие вызовы.
READ_CALENDAR – даёт приложению доступ к чтению календарных записей пользователя.
READ_CONTACTS – даёт приложению считывать данные о контактах пользователя.
READ_FRAME_BUFFER – даёт доступ к кадровому буферу, в том числе позволяет приложению делать скриншоты.
READ_HISTORY_BOOKMARKS – даёт приложению право считывать историю и закладки браузера.
READ_INPUT_STATE – позволяет приложению получать текущее состояние клавиш и их переключение. Больше не используется.
READ_LOGS – даёт приложению право читать низкоуровневые системные файлы журнала.
READ_PHONE_STATE – даёт приложению право чтения текущего состояния телефона.
READ_PROFILE – даёт приложению право считывать данные пользовательского профиля.
READ_SMS – даёт приложению право читать SMS-сообщения.
READ_SOCIAL_STREAM – позволяет приложению считывать информацию с пользовательского социального стрима.
READ_SYNC_SETTINGS – даёт право считывать настройки синхронизации.
READ_SYNC_STATS – даёт право считывать статистику синхронизации.
READ_USER_DICTIONARY – позволяет приложению считывать словарь пользователя.
REBOOT – позволяет приложению перезагружать устройство.
RECEIVE_BOOT_COMPLETED – позволяет приложению получать строку ACTION_BOOT_COMPLETED, которая вещается по окончанию загрузки системы.
RECEIVE_MMS – даёт приложению право получать информацию о входящих MMS-сообщениях, записывать и обрабатывать их.
RECEIVE_SMS – даёт приложению право получать информацию о входящих SMS-сообщениях, записывать и обрабатывать их.
RECEIVE_WAP_PUSH – позволяет приложению анализировать входящие WAP-сообщения.
RECORD_AUDIO – даёт приложению право записывать звук.
REORDER_TASKS – даёт приложению право изменять порядок задач.
RESTART_PACKAGES – больше не используется, так как строка restartPackage(String) больше не поддерживается.
SEND_SMS – даёт приложению права для отправки SMS-сообщений.
SET_ACTIVITY_WATCHER – позволяет приложению анализировать и контролировать, как в системе глобально запускаются различные задачи.
SET_ALARM – позволяет приложению создавать будильник или другое событие.
SET_ALWAYS_FINISH – позволяет приложению контролировать, будет ли вся активность немедленно приостановлена в фоновом режиме.
SET_ANIMATION_SCALE – даёт право изменять глобальный коэффициент масштабирования анимации.
SET_DEBUG_APP – настраивает приложение для отладки.
SET_ORIENTATION – даёт доступ к низкоуровневому управлению ориентацией и поворотами экрана.
SET_POINTER_SPEED – даёт доступ к низкоуровневому управлению скоростью курсора.
SET_PREFERRED_APPLICATIONS – больше не используется.
SET_PROCESS_LIMIT – даёт право приложению устанавливать максимальное количество процессов, которые могут быть запущены.
SET_TIME – позволяет приложению устанавливать системное время.
SET_TIME_ZONE – позволяет приложению устанавливать системный часовой пояс.
SET_WALLPAPER – позволяет приложению устанавливать обои.
SET_WALLPAPER_HINTS – позволяет приложению устанавливать подсказки обоев.
SIGNAL_PERSISTENT_PROCESSES – позволяет приложению запрашивать, чтобы был послан сигнал со всех персистирующих процессов.
STATUS_BAR – даёт приложению право закрывать, открывать или полностью отключать статус-бар и его иконки.
SUBSCRIBED_FEEDS_READ – позволяет приложению получать доступ к подписке канала ContentProvider.
SYSTEM_ALERT_WINDOW – позволяет приложению открывать окна поверх всех других приложений, используя TYPE_SYSTEM_ALERT.
UPDATE_DEVICE_STATS – даёт приложению право обновлять статистику устройства.
USE_CREDENTIALS – позволяет приложению запросить authtokens у AccountManager.
USE_SIP – даёт приложению право использовать сервис SIP.
VIBRATE – даёт приложению доступ к вибрации.
WAKE_LOCK – позволяет приложению использовать PowerManager WakeLocks, чтобы не понижать частоту процессора во время сна и не затемнять экран.
WRITE_APN_SETTINGS – позволяет приложению записывать настройки APN (точки доступа к интернету).
WRITE_CALENDAR – даёт права приложению записывать (но не читать) данные в календарь пользователя.
WRITE_CONTACTS – даёт права приложению записывать (но не читать) данные в контакты пользователя.
WRITE_EXTERNAL_STORAGE – даёт права приложению записывать данные на внешний накопитель.
WRITE_GSERVICES – даёт права приложению записывать данные в карты Google.
WRITE_HISTORY_BOOKMARKS – даёт права приложению записывать (но не читать) данные в историю и закладки браузера пользователя.
WRITE_PROFILE – даёт права приложению записывать (но не читать) данные в персональный профиль пользователя.
WRITE_SECURE_SETTINGS – позволяет приложению читать или записывать данные в настройки безопасности системы.
WRITE_SETTINGS – позволяет приложению считывать или записывать системные настройки.
WRITE_SMS – позволяет приложению писать SMS-сообщения.
WRITE_SOCIAL_STREAM – позволяет приложению записывать (но не читать) потоковые социальные данные пользователя.
WRITE_SYNC_SETTINGS – позволяет приложению записывать настройки синхронизации.
WRITE_USER_DICTIONARY – позволяет приложению записывать данные в словарь пользователя.
и как что-то запретить ?
Самое важное-то не написано !