Система прав, открытая для глаз пользователя - одна из важных составляющих системы безопасности всех современных мобильных ОС. Естественно, существует она и в Android - во время установки появляется окно, в котором можно посмотреть, требует ли программа подключения к сети, сможет ли она отправлять SMS, следить за местоположением пользователя и так далее. Узнав это, пользователь был в праве отказаться от установки, но вот запретить конкретные действия во время процесса или позже было нельзя... до Android 4.3 Jelly Bean.

Уже давно "продвинутые пользователи" требуют у Google дать им возможность отключать те или иные разрешения для каждого конкретного приложения. Одним это необходимо для повышения собственной информационной безопасности, другим ради самого чувства наличия более полного контроля за системой. За последнее время появилось несколько сторонних реализаций этих функций, но все они требуют наличия root-доступа. Разработчики самой ОС никогда не отвечали на такие просьбы, но оказалось, что работа над системой контроля уже идет полным ходом.

Ребята из Android Police, в очередной раз исследуя код Android 4.3, наткнулись на новый пункт меню App Ops (Операции в приложениях). Он скрыт от глаз обычного пользователя, но доступ к нему можно получить с помощью установки ряда сторонних лаунчеров или приложений, позволяющих делать ярлыки для любых частей системы. Для удобства скажем, что "Операции в приложениях" являются частью com.android.setting и располагаются по адресу com.android.settings.Settings$AppOpsSummaryActivity.

Операции в приложениях

Создав этот нехитрый ярлычок на рабочем столе и нажав его пользователь оказывает в новом меню, состоящем из нескольких вкладок: местоположение, личные данные, SMS/MMS и устройство. Во всех этих вкладках списками расположены названия приложений и сервисов, использующие соответствующие группы прав. Естественно, одно приложение может находится сразу в нескольких вкладках, если оно проверяет местоположение и отправляет SMS. Под названием приложения/сервиса описан краткий список прав, а слева от него относительное данного момента время последнего использования.

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

Эволюция разрешений по мере работы с приложением

Рядом с каждым правом имеется ползунок переключателя, с помощью которого можно отключить доступ к описанной в праве функции. Например, программа не сможет вызвать камеру или просканировать список контактов, даже если такое право было описано в декларации во время установки. В наличии отметка о времени последнего применения.

Права приложений вертикально Права приложения горизонтально

Фактически, мы имеем перед собой уже готовую и работающую систему регуляции прав пользователями. Но почему же Google не сделали ее частью Android 4.3? Оказывается, дело не в жадности поискового гиганта, просто настройка прав еще нуждается в ряде доработок. Из мелочей - при русском интерфейсе в вертикальном положении "криво" отображаются переключатели, в горизонтальном виде или с английским интерфейсом проблем нет.

Так же сама система выглядит пока не слишком интуитивно понятной, не ясно, почему список прав не берется из декларации. Впрочем, Android Police уже нашли намеки на то, что некоторые права приложению в будущем можно будет ограничить прямо при установке, а это значит, что в конечной реализации официальный список прав все же будет просматриваться. Вероятно, оба способа объединят для повышения безопасности.

Выключение камеры для Instagram Instagram без доступа к камере

Наконец, самая главная проблема всей этой системы - невнимательный пользователь может забыть о запрете какой-то функции, а потом пенять разработчика за вдруг "сломавшееся" приложение. Это можно было бы решить с помощью системы предупреждений вида: "Функция 'такая-то' не может быть вызвана из приложения, так как ее запретили в настройках App Ops". Отключения прав могут вызвать некорректную работу ряда программ, не рассчитанных на это - еще одна проблема.

Когда стоит ждать полностью работоспособную систему пользовательского контроля прав? Вероятнее всего она появится с выходом Android 5.0 KLP и будет его неотъемлемой частью. Очевидно, что обычные пользователи вряд ли будут заходить в это меню, а для продвинутых будет сделан более удобный интерфейс.

[via Android Police]