В Android 6.0 было удалено несколько разрешений и групп разрешений :
Хотя на первый взгляд это не кажется важным (разве это не способ организации разрешений?) – дважды подумав, мы обнаруживаем большую важность: начиная с Android 6 (а с Playstore еще до этого), если приложение update запрашивает разрешение у группы, в которой оно уже находилось в предыдущей установленной версии, это «новое разрешение» не доводится до сведения пользователя. В Android 6 он даже предоставляется автоматически. Также имейте в виду, что пользователь (с «родными возможностями Android») может отозвать доступ только к целым группам, а не к отдельным разрешениям — поэтому меньшее количество групп означает меньшую гибкость, вплоть до бесполезности всей функции.
По указанной выше ссылке удалены следующие группы:
ACCOUNTS
, AFFECTS_BATTERY
, COST_MONEY
, DISPLAY
, MESSAGES
, NETWORK
, PERSONAL_INFO
, PHONE_CALLS
, SCREENLOCK
, SOCIAL_INFO
, SYSTEM_CLOCK
, SYSTEM_TOOLS
, USER_DICTIONARY
,WALLPAPER
Меньше разрешений, охватывающих больше способов доступа к личным данным, означает кошмар для конфиденциальности. По поводу учетных записей я уже поднимал этот вопрос: Android 6+ и права доступа к учетным записям: куда они делись? Как мы выяснили там, то, что раньше было связано с более не существующим USE_CREDENTIALS
разрешением, теперь перемещено в контакты (не уверен, читаете ли вы или пишете): поэтому, если вы хотите «войти в систему с помощью Google» (или любого другого владельца учетной записи), вам нужно предоставить приложению полный доступ к вашему списку контактов! Всплывающее окно на скриншоте («Разрешить Stack Exchange доступ к вашим контактам?») появилось сразу после нажатия кнопки «Войти через Google».
Таким образом, рядом с большинством разрешений учетной записи (кроме GET_ACCOUNTS
, все они исчезли), которые рассматриваются в моем другом уже связанном вопросе, были удалены следующие разрешения:
ACCESS_MOCK_LOCATION
(теперь нужно настроить одно приложение, обрабатывающее MOCK_LOCATION, о котором я упоминал?) , CLEAR_APP_USER_DATA
, GET_TOP_ACTIVITY_INFO
, HARDWARE_CONTROLS
, HARDWARE_TEST
, INJECT_EVENTS
, INTERNAL_SYSTEM_WINDOW
, READ_HISTORY_BOOKMARKS
, READ_PROFILE
, READ_SOCIAL_STREAM
, READ_USER_DICTIONARY
, SET_ACTIVITY_WATCHER
, SET_ORIENTATION
, SET_POINTER_SPEED
, STATUS_BAR
, SUBSCRIBED_FEEDS_READ
, SUBSCRIBED_FEEDS_WRITE
, VOICEMAIL
, WRITE_HISTORY_BOOKMARKS
, WRITE_PROFILE
,WRITE_SMS
WRITE_SOCIAL_STREAM
Это моя главная забота здесь. К сожалению (можно почти сказать «как и ожидалось»), официального заявления по этому поводу не поступало — или я уже знал об этих изменениях некоторое время назад. Я надеюсь, что некоторые из наших участников, которые также являются разработчиками, имеют более глубокое понимание и могут помочь нам с некоторыми объяснениями и советами:
Как я сказал выше (где-то), новая система разрешений — это утечка, которая показывает, что новая идея часто не является хорошей идеей.
Ты хорош? Ладно, копай.
Когда Google начал работать над способом принудительного предоставления и отказа в разрешении на лету, это был Android 4.3. Это был глючный беспорядок, поэтому они его спрятали. Однако его все еще можно использовать, создав ярлык в меню настроек приложения. Это меню было очень похоже на текущее меню приложений, но при нажатии на параметр сразу же появляются параметры разрешений. Вам также нужно было обнаружить разрешения, прежде чем вы могли их переключать, и это был беспорядок с ошибками, поскольку приложения задавались вопросом, что происходит, потому что вы что-то отключили, и неудобно вылетало. Ура.
Система была удалена после того, как ее нашли моддеры (поэтому она была удалена в 4.4), 1 но вернулась в Marshmallow. Это выглядело действительно хорошо — вы, наконец, могли выбирать, могут ли такие вещи, как Facebook, определять ваше местоположение (хотя он действительно просил). Даже некоторые приложения Google, такие как Hangouts, не защищены от ваших решений. Но потом мы столкнулись с проблемой - система все еще сломана, только по-новому: права доступа были сильно изменены.
Вы хотите, чтобы Stack Exchange входил в систему через Google? Ему нужны разрешения на контакты (хотя разработчики SE исправили это на своей стороне). 2 Хотите загрузить изображения на Facebook? Он должен видеть все ваши файлы. Почему? Сжатие . Разрешения теперь предоставляются в группах, где запрос вашей учетной записи Google также позволяет приложениям видеть каждый контакт на устройстве. Сомневаюсь, что это было задумано, но удаление большинства разрешений означало необходимость упростить игровое поле; большинство удаленных разрешений просто запихнули в суперобщие группы .
Некоторые разрешения были удалены из-за новых SDK. GET_ACCOUNTS
Теперь запускает новый SDK, который позволяет выполнять вход в Google, но возвращается к выполнению этого через разрешения контактов, если приложение не поддерживает его. Это объясняет одно (в том числе то, как приложение SE было окончательно исправлено), но некоторые другие не получают такой обработки. Насколько я знаю, приложения могут просто случайно читать словарь независимо от клавиатуры. Большинство других разрешений, о которых упоминает Иззи, по-видимому, соотносятся с измененными группами: большинство из них вписываются в Godmission «Изменение системных настроек» (разрешения отделены от основных) и «доступ к использованию». Некоторые другие обрабатываются самими приложениями.
Итак, все, кому не дали новый дом, было убито. Иногда это имело смысл (нам нужно только GET_ACCOUNTS
активировать SDK), в то время как в других случаях вам хотелось всадить пулю в свой телефон: о да, я просто позволю вам получить доступ к моим контактам, вы, похоже, в порядке. Конечно, получайте доступ к моим звонкам и тратьте мои деньги. (Надеюсь, никто не настолько глуп. Надеюсь.)
Сначала я подумал ура! Упрощение! Но это позволяет, казалось бы, законным приложениям делать незаконные вещи НАМНОГО проще. Ваш хакерский инструмент Minecraft, который хочет получить вашу учетную запись Google, вероятно, также крадет ваши контакты. И продавать их.
Затем это усугубляется системой блокировки разрешений, которая позволяет вам точно настраивать разрешения приложений. Это здорово, но это не работает. Вообще. Это также неточно (например, говорится, что Stack Exchange читает мои SMS'ы. Нет, это не так) и просто ужасно.
Лично я думаю одно из двух:
Новая система разрешений была разработана для обеспечения возможности простых и быстрых изменений в целях безопасности. Разрешения теперь предоставляются в группах, что объясняет, почему некоторые из них удалены: Google подумал, что оставить их под одним большим заголовком было хорошей идеей (и для конечного пользователя я понимаю почему: контролировать каждое отдельное разрешение может быть утомительно). Конечно. как и коммунизм, он был хорош только на бумаге ; на самом деле это беспорядок, в котором они не хотят признаваться. Справедливо.
Тем не менее, они могут делать это, чтобы заставить больше приложений использовать свой SDK для взлома и устранения подозрительных разрешений (не вините их) и, следовательно, зарабатывать больше денег. Доказано, что они делают это (и пытаются сделать Android менее открытым исходным кодом), что вызывает у меня отвращение.
Так что для конечного пользователя это немного похоже на iOS, под которой я подразумеваю что-то, что выглядит хорошо, но является дерьмом. Но можно ли это исправить? Вроде.
По словам разработчиков, Xprivacy работает на Marshmallow. Теперь это требует возиться со всякими мелочами на MM, и есть проверенный boot . Это неприятно, так как вы, вероятно, получите красное или желтое предупреждение, которое может помешать загрузке. (В зависимости от вашей удачи и того, как много вы напортачили.) Но если вы можете заставить Xprivacy работать, это достаточно просто.
Из-за позиции «Не загружаться ПОЛНАЯ СТОП», которую, по-видимому, примет N, работа над этим может быть даже более кошмарной.
РЕДАКТИРОВАТЬ 2017 - Разработчики Xposed работают над тем, чтобы обойти все это (ура!) Если я найду сообщение на XDA, я дам ссылку на него
Это действительно неудобно, но обеспечивает максимальный контроль (насколько это возможно). Вы предоставляете разрешения приложениям, когда это абсолютно необходимо, а затем делаете безумный рывок, чтобы снова их отключить. Вероятно, будет проще, когда Nougat появится на большем количестве устройств, чтобы можно было использовать многооконный режим.
Если вы подняли глаза, когда я вам сказал, вы, возможно, заметили метод Иззи: вы просто воздерживаетесь от обновления до Marshmallow или Nougat. Бу-ху, я знаю, но на самом деле ни то, ни другое не меняет правила игры. Дай.... Полгода, и большая часть хрени для N будет в плеймаркете, если очень захотеть. Таким образом, решение Izzy означает придерживаться версии 5.1.1 или более ранней. Я могу жить, и ты тоже.
(Просто чтобы угодить массам. К вашему сведению, это было бы невозможно.)
Или игнорировать его. Ваш звонок.
РЕДАКТИРОВАТЬ Иззи нашел ссылку на вопрос о переполнении стека , в котором объясняется, что учетные данные, такие как логины для входа в различные приложения , подпадают под «обычное разрешение» ( «нормальный уровень защиты »), т. е. любое приложение может получить к ним доступ без вашего ведома. К счастью, некоторые приложения и логины позволят вам удалить это через свои менеджеры учетных записей, в зависимости от того, насколько злонамеренным пытается быть разработчик.
РЕДАКТИРОВАТЬ 2 Я забыл сказать, что вы можете удалять приложения из учетных записей :) В качестве примеров я буду использовать системы учетных записей Google и Facebook, поскольку они наиболее часто используются.
ВЫПОЛНЕНО!
Сделанный!
Надеюсь, это поможет! Если нет, просто оставьте комментарий, вы знаете упражнение. Я все равно буду над этим работать. Готово, но все же дайте мне знать, если я что-то пропустил!
1 Google предпринимал различные попытки «скрыть это лучше», и разные версии интерфейсов AppOps возвращали его тогда для 4.4 и 5.0, но не далее
2 Судя по всему, приложения могут добровольно использовать новый SDK, который позволяет входить в систему Google без разрешения контактов. Подробнее см. здесь .
USE_CREDENTIALS
, теперь является безопасным разрешением , что означает, что пользователь не может его отрицать. Прочтите еще раз и подумайте: значит, любое приложение может использовать любую из моих учетных записей без моего разрешения, если только я его не установлю. Большой. Ой, подождите: так ничего и не изменилось, то же самое было и с LP, и до </sarkasm>.Подводя итог моим собственным выводам, которые могут совпадать с ответом Дэна :
Google начал использовать новую систему разрешений с Android Jellybean 4.3. Официальное намерение (раскрытое позже) состояло в том, чтобы дать пользователям некоторый контроль над тем, к каким разрешениям должно иметь доступ приложение («разрешение по запросу») — вместо существовавшего в то время «все или ничего» (если вы не как приложение, имеющее определенное разрешение: либо живите с ним, либо не устанавливайте его). Интерфейс AppOps был скрыт, но вскоре обнаружен, снова скрыт (Kitkat/4.4), снова открыт, и то же самое в третий раз с LP/5.0, после чего он был защищен способом, который трудно обойти.
Наконец, AppOps появился в Marshmallow/6.0. Но вместо того, чтобы предоставить пользователям детальный контроль разрешений, разрешения истощаются, а контроль довольно сырой; если вы, например, хотите, чтобы ваше приложение для путешествий могло добавлять ваши заказы в календарь, но не читать другие записи календаря: ни в коем случае. Либо вы запрещаете доступ к календарю, либо разрешаете его. Аналогично для других разрешений — поскольку AppOps работает только с группами. 1
Кроме того, многие разрешения либо полностью удалены, либо им назначен уровень защиты «нормальный», поэтому они предоставляются автоматически и не могут быть отозваны пользователем. Это относится, например, к INTERNET
разрешению, но также и к USE_CREDENTIALS
(поэтому любое приложение с этим разрешением может использовать любую из ваших учетных записей без вашего явного разрешения!) или даже BLUETOOTH_ADMIN
(сопряжение вашего Droid с любым устройством BT в пределах досягаемости). Подробный список см . в этом Gist .
Кроме того, были добавлены новые уровни защиты: appop
для разрешений, которые пользователь должен явно предоставлять через новую систему «по требованию», pre23
для разрешений, автоматически предоставляемых, если приложение нацелено на версию ниже MM (т.е. до «разрешений во время выполнения», где они введены), preinstalled
для приложения, поставляемые с ПЗУ (непонятно, чем Android отличает это от system
, которое было переименовано в privileged
), плюс еще 3.
В общем, у нас сейчас хуже:
Так что в большинстве случаев это означает то же, что и до MM: если вам не нравится приложение, имеющее определенное разрешение, не устанавливайте его.
Несколько элементов из следующего неполного списка могут применяться одновременно. Сделайте свой выбор:
INTERNET
, BLUETOOTH_ADMIN
и другие «сюрпризы».1: Очевидно, что пользователь не должен "перенапрягаться". Тем не менее, может быть «расширенный режим», чтобы справиться с этим.
Дэн Браун
Иззи
Дэн Браун
Иззи
Дэн Браун
Иззи