Можно ли установить приложение и исключить некоторые из запрашиваемых разрешений?

Иногда я хочу установить приложение, которое требует определенных разрешений, которые, как мне кажется, ему действительно не нужны. Могу ли я установить приложение, не предоставляя ему эти разрешения? Например, местоположение GPS, состояние телефона , подключение к Интернету и т. д.

Можно ли изменить разрешения приложения после его установки?

Вот связанный с этим вопрос, на который стоит обратить внимание: android.stackexchange.com/questions/3294 .
еще один связанный вопрос stackoverflow.com/questions/1836155/…

Ответы (9)

До Android 4.3 (Jelly Bean)

Нет. Без пользовательского ПЗУ это дело «все или ничего». Это одна из причин, по которой Google призывает разработчиков убедиться, что они запрашивают абсолютный минимум разрешений, необходимых для работы приложения.

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

Android 4.3/4.4 (частично также 5.x)

Существует полускрытый диспетчер разрешений (App Ops), к которому можно получить доступ через стороннее приложение , но для него не требуется root или пользовательское ПЗУ. Android Police рассказал об этом здесь .

Обратите внимание, однако, что Google заявил, что это было выпущено по ошибке, и в более новых версиях Android это снова отключено.

Андроид 4.4+

В дополнение к упомянутым выше App Ops , здесь вы также можете использовать Xposed Framework (для Android 5+ см. здесь ) с такими модулями, как Xprivacy или Protect My Privacy . Хотя для этого потребуется, чтобы ваше устройство было рутировано, оно предлагает дополнительные функции.

Андроид 6+

marcioggs описал функции, предоставляемые в Android M , в отдельном ответе.

Если у вас есть права root, вы можете исключить доступ к сети с помощью DroidWall, но это особое исключение.
К сожалению, Google решил сгруппировать вещи, которые нужны многим развлекательным приложениям, такие как определение того, есть ли активный вызов, с тем же разрешением, что и вещи, которые нужны очень немногим приложениям, не связанным с телефоном, например определение номера телефона.

CyanogenMod 7 поддерживает это. Он активируется, перейдя Settings->CyanogenMod Settings->Applicationsи проверив «Управление разрешениями» в самой последней сборке. Затем вы можете разрешать и запрещать разрешения, выбирая приложение из списка управления приложениями ( Settings->Applications->Manage applications). На endgaget есть статья с демонстрацией на Youtube.

Отказ от ответственности: для некоторых это может быть очевидным, но отказ в доступе к приложению может привести к катастрофическим последствиям. Тем не менее, если у вас есть устройство, поддерживаемое CM, и вы хотите получить root-права и установить его, вы можете пользоваться контролем разрешения за разрешением (и любыми опасностями, которые с этим связаны).

Фактически, из-за сбоев, которые, как правило, вызывала реализация управления разрешениями, она была удалена из кодовой базы CyanogenMod в версии 9. Однако самые последние ночные сборки CyanogenMod 10.1 теперь включают функцию, получившую название « Privacy Guard ». Вместо того, чтобы блокировать доступ приложений к данным, которые они запрашивают, Privacy Guard предоставит им пустые данные.

Например, если приложение, работающее под Privacy Guard, запрашивает ваш список контактов, CM просто возвращает пустой список, в результате чего приложение функционально считает, что у вас нет контактов, хранящихся на вашем телефоне.

К сожалению, подделка данных не рассматривается для интеграции в CyanogenMod.

Есть приложение App Shield . По сути, он переупаковывает .apk с разрешениями, удаленными из манифеста . Блестящая идея для стоковых телефонов без рута. Однако возможен сбой (принудительное закрытие), как и в случае с CyanogenMod (начиная с версии 7).


Обновление: App Shield больше не поддерживается. В настоящее время его можно найти в некоторых «личных репозиториях Aptoide», например, в Mixal и Karbyfio . Сейчас рекомендуется использовать что-то более современное.

ПРИМЕЧАНИЕ. LBE Privacy Guard больше не поддерживается и доступен только для версий Android ниже 4.2.

Предупреждение: если вы используете Jelly Bean (Android 4.1+), обязательно проверьте, не было ли уже обновлено LBE для Jelly Bean. На данный момент (27 июля 2012 г.) он все еще несовместим, и это приведет к циклической загрузке вашего устройства на Jelly Bean. Это означает, что вам, возможно, придется восстановить заводские настройки устройства. Вместо этого теперь рекомендуется использовать Xprivacy (требуется рут).


LBE Privacy Guard может блокировать определенные разрешения для каждого приложения как во время установки, так и после нее. Это английская версия явно китайского приложения, которое существовало некоторое время (я никоим образом не связан с ними); у него уже более 100 000 загрузок. Я еще не пробовал, но планирую сделать это завтра.

Вы также можете настроить его, например, чтобы Facebook отображал подсказку (да/нет), когда он хочет получить доступ к вашему местоположению и т. д. Скриншот из Play Store:

введите описание изображения здесь

Не работает на Xperia ray с CM 10.0. Мне просто пришлось переустановить свое устройство!
@rubo77: Ой, это отстой! (Вы читали мое предупреждение вверху?)
Да, но я думал, что мне это сойдет с рук ;) Следует добавить, что нет способа восстановить бутлуп и что он не работает на многих устройствах. Глядя на отзывы в магазине Play, ровно половина голосов - 5, а половина - 1, поэтому я думаю, что каждое второе устройство выйдет из строя.
@rubo77: Значит, он не обновлялся больше года? Я не использовал его с тех пор, как сделал это редактирование ... Теперь я использую Xprivacy. Что касается восстановления после загрузочной петли, то есть способы. Например, вы можете загрузиться в рекавери и удалить приложение через файловый менеджер / ваш компьютер. Может быть, тогда перепрошить ваш ПЗУ.
Конечно, я имел в виду «невозможно восстановить загрузочную петлю без потери всех ваших настроек». Сейчас попробую Xprivacy , звучит многообещающе
@ rubo77: Если вы удалите приложение и / или перепрошьете ПЗУ, если это сработает, вы не должны потерять свои настройки. Удачи с Xprivacy!
Вторая ссылка мертвая, к сожалению. Ответ нуждается в обновлении.
@Firelord: А, теперь я понимаю: ссылка доступна только мне, потому что я когда-то ее установил. Когда я выхожу из своей учетной записи Google, я также не могу получить доступ к странице. Однако другого места для программного обеспечения в Play Store нет. Единственной альтернативой является китайская версия в Play Store, которая обновлена, но непригодна для пользователей, не говорящих на китайском языке. Так что другой ссылки у меня нет. Все в моем ответе под вертикальной чертой устарело и хранится только в архивных целях. Просто используйте Xprivacy: он лучше во многих отношениях.

В Android M будут доступны следующие функции:

  • Дайте определенные разрешения по мере необходимости во время выполнения;
  • Показать разрешение приложения;
  • Показать все приложения, которые используют определенное разрешение.

Документация для предварительного просмотра M:

https://developer.android.com/preview/features/runtime-permissions.html

Экран разрешений:

(Нажмите на изображение, чтобы увеличить)

ИЗОБРАЖЕНИЕ:

Вы можете использовать Xposed Framework вместе с модулем настроек приложения , чтобы запретить разрешения приложения. Вы также можете использовать его для изменения настроек DPI, позволяющих приложениям работать в режиме планшета на телефонах и наоборот (наряду с изменением размера вещей в целом). Это прекрасно работает для меня. Однако для его установки вам понадобится root.

Спасибо Иззи за указание на необходимость модуля. Согласно их комментарию, вы также можете использовать Xprivacy или Protect My Privacy для достижения этого контроля.

На момент написания этого ответа модуль настроек приложения поставлялся в комплекте с большинством установок xposed framework. Этот модуль поддерживает эту функцию.
Спасибо, что все еще заботитесь о своих «старых ответах» — +1 за это :) Так что тогда мы очистим (удалим) наши комментарии :) PS: Пожалуйста, оставьте свой первый, он все еще имеет смысл :)

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

Хорошее приложение (которого больше нет в игровом магазине с 2016 года) с помощью root-деинсталлятора : чтобы отозвать приложение только право на вход в Интернет в CyanogenMod, вы можете использовать Root Firewall (требуется root).

Он может заблокировать доступ в Интернет для любых приложений.

Бесплатная версия уже может блокировать все приложения или только до 7 отдельных приложений.

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

  1. Экспоузд Фреймворк

Перейдите на xda-developers.com и найдите «xposed framework», чтобы получить информацию о том, как установить фреймворк. После установки фреймворка установите модули XPrivacy или App Settings , чтобы получить больший контроль над каждым приложением и предоставленными им разрешениями.

  1. Установите прошивку на базе Cyanogenmod.

Перейдите в раздел « Загрузки Cyanogenmod » и посмотрите, есть ли ваше устройство в списке. Если это не так, вернитесь на xda-developers.com и перейдите на страницу форума вашего устройства, чтобы найти список ПЗУ для вашего устройства. Ищите что-нибудь, относящееся к «cyanogenmod» или «cm» в исходном сообщении ветки ПЗУ, чтобы найти правильную основу для предоставления доступа к управлению разрешениями.

Надеюсь это поможет.