Что делает разрешение Android «WRITE_GSERVICES»?

8

Существует загадочное и недокументированное разрешение для Android под названием: WRITE_GSERVICES . Как обычно, собственная документация Googles даже более загадочна, чем любая плохая сказка:

android.permission.WRITE_GSERVICES      Allows an application to modify the Google service map.

Однако Google (!) Для Google Service Mapничего полезного не дает.

Что это контролирует и для чего оно используется?

not2qubit
источник
@ Райан: Если вы на самом деле удосужились посмотреть на ссылку, которую вы называете дублированной, вы увидите, что это не так. И где вы видите это связано с данными карты? Источники, кажется, рассказывают другую историю.
not2qubit
Ну, это просто не так, и я не вижу, чтобы вы даже пытались подкрепить свое утверждение каким-либо кодом, доказательством или соответствующими ссылками, а не вашими собственными. Пожалуйста, покажите мне код, который показывает, что он даже удаленно подключен к Google Maps. Как я уже сказал, мое собственное расследование показывает что-то еще.
not2qubit
1
Хотя этоэто ) предназначено READ_GSERVICES, что имеет смысл, поскольку обычные приложения не могут запрашивать доступ, запрашивающий WRITE_GSERVICESуказывает, что Google Maps требует разрешения READ_GSERVICES для корректной работы. - Также хочу добавить, что из 17 изменений в дубликате, который вы называете «моим», 14 из них были сделаны другими пользователями, кроме меня, добавив более 5000 символов.
Райан Конрад
1
См. Android.izzysoft.de/applists/perms#WRITE_GSERVICES :) «Позволяет приложению изменять карту службы Google». Итак, @RyanConrad Это сервисная карта , а не «Google Maps Service». Что именно подразумевается под этим, это другое дело, поскольку, насколько мне известно, никакой реальной документации не существует.
Иззи
2
Я голосую, чтобы вновь открыть этот вопрос. Для объяснения, пожалуйста, смотрите (и присоединяйтесь к обсуждению) Мета: Должны ли мы действительно закрыть вопросы о значениях разрешений в качестве дубликатов «общего списка»?
Иззи

Ответы:

8

Обратите внимание, что это разрешение почти полностью не документировано, поэтому нам нужно ощутить его истинный смысл. Так что это ни в коем случае не «авторитетный ответ», а более или менее нечто среднее между «хорошим предположением» и «вычетом из других указателей».

Официальное описание для этого разрешения (как сказано, больше нет документации):

Позволяет приложению изменять карту сервиса Google.

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

Чтение между строк: всякий раз, когда приложение хочет использовать (частично) Google Services Framework , оно должно декларировать READ_GSERVICESтребуемое разрешение - что очень похоже на требование, GET_ACCOUNTSесли вы хотите USE_CREDENTIALS: сначала приложение должно убедиться, что требуемый сервис доступен вообще, прежде чем получить к нему доступ.

Это дает нам представление о том, какой должна быть Карта Сервиса Google : какой-то индекс для доступных (установленных) Сервисов Google.

Теперь, когда мы обнаружили это, мы можем догадаться, для чего WRITE_GSERVICESможет быть предназначено разрешение - и почему оно защищено systemуровнем защиты (то есть оно предоставляется только «системным приложениям», то есть тем, которые интегрированы в ПЗУ, устанавливается в /systemраздел): если READ_GSERVICESнеобходимо выяснить, какие сервисы Google доступны, WRITE_GSERVICESдолжен быть его аналогом для обновления этой карты сервиса. Например, каждый раз, когда новая служба была установлена ​​(или удалена), чтобы обновить «индекс служб Google, доступных на устройстве» - «Карту службы Google».

В этом контексте мне интересно только одно: почему это разрешение принадлежит ACCOUNTSгруппе ...


Смотрите также:

Иззи
источник
1
Еще один момент , почему это разрешение может быть в ACCOUNTSгруппе: многие службы Google требуют логин , который будет использоваться, так что могут быть некоторые перекрестные проверки (например , передачи учетной записи имя , чтобы проверить , если у вас есть «активный пользователь» для данного сервис, даже без входа в систему / передачи пароля / AUTH-токена).
Иззи