Установка пользовательских разрешений для каждого приложения [дубликат]

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

Можно ли это сделать на Android? Я знаю, что в iOS есть это для некоторых вещей, таких как контакты и данные календаря. Пользователю предлагается, прежде чем приложение получит доступ к этим конфиденциальным наборам данных.

Технически я вижу, как это работает, отказывая в доступе к API, когда приложение пытается получить к нему доступ.

Похоже, он доступен в Android 4.3, хотя и скрыт по умолчанию. androidpolice.com/2013/07/25/…

Ответы (3)

Добавление к ответу Чака : да, это правда, что «изначально» разрешения - это «все или ничего». Ожидается, что «стандартный пользователь» либо примет все разрешения, запрашиваемые приложением, либо воздержится от его установки.

И да, это правда: используя такое приложение, как Permissions Denied , которое просто «отказывает» приложению в определенных разрешениях, приложения могут принудительно закрыться, поскольку они этого не ожидают.

Но есть и третий способ, когда приложениям просто передаются «фальшивые данные». Это делается, например, с помощью LBE и PDroid (подробности см. в разделе Другие приложения для управления разрешениями? и как подделать мою личную информацию ). Приложение хочет контакты? К сожалению, адресная книга пуста. IMEI? Хорошо, а как насчет "1234567890"? Интернет? Извините, но мы в туннеле — ни Wi-Fi, ни мобильные данные недоступны. Таким образом, все возвращенные данные имеют смысл для запрашивающего приложения: оно не получает простого «исключения», поэтому оно не падает. И что он делает из поддельных данных - кого это волнует? :)

Излишне говорить: здесь также требуется root ...

Каждое приложение будет представлять список разрешений, которые оно использует во время установки, после чего пользователь может либо принять их и установить приложение, либо отклонить и остановить установку. Модель разрешений в Android — это «все или ничего», что означает, что вы либо принимаете все, что запрашивает приложение, либо не устанавливаете его.

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

Вы можете получить то, что хотите, но вам нужно изменить или установить на ваше устройство неоригинальную прошивку.

В CyanogenMod 7 есть управление разрешениями, но оно способно только отзывать разрешения. Запросы API терпят неудачу тогда. В конце концов это то же самое, как если бы разработчик забыл объявить разрешение в первую очередь, и приложения часто не проверяют это условие и терпят неудачу.

Кроме того, есть набор исправлений расширения Privacy Droid (pdroid). Первоначально он был разработан для Android 2.3 и состоит из закрытого исходного кода ( приложение для управления в Google Play и патч с открытым исходным кодом для прошивки (см. ссылку в магазине).

Поскольку разработка застопорилась, другие перенесли системные исправления на более новые версии Android, а также были написаны приложения для управления с открытым исходным кодом. Некоторые пользовательские ПЗУ уже включают все необходимые изменения, для тех, кто этого не делает (CM и др.), есть проект автопатчера для изменения образов прошивки, чтобы включить все необходимые биты:

Ветка AutoPatcher на XDA

Подсказка: на данный момент доступны две версии оригинального PDroid. Подробности можно найти по ссылкам в моем ответе на этот вопрос. Один из форков даже с открытым исходным кодом (OpenPDroid).