O que a permissão "WRITE_GSERVICES" do Android está fazendo?

8

Existe uma permissão Android misteriosa e não documentada chamada: WRITE_GSERVICES . Como de costume, a própria documentação do Googles é ainda mais misteriosa do que qualquer conto de fadas, escrevendo:

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

No entanto, pesquisar no Google (!) Por Google Service Mapnada produz nada útil.

O que está controlando e para que é usado?

not2qubit
fonte
@ Ryan: Se você realmente se preocupou em olhar para o link que você diz estar duplicado, verá que esse não é o caso. E onde você vê que isso tem a ver com os dados do mapa? Fontes parecem contar outra história.
Not2qubit
Bem, simplesmente não é e não vejo você tentando fazer backup de sua declaração com qualquer código, prova ou links relevantes, não os seus. Por favor, mostre-me o código que mostra que ele está conectado remotamente ao Google Maps. Como eu disse, minha própria investigação mostra outra coisa.
Not2qubit
11
Enquanto isso (e isso ) é válido READ_GSERVICES, o que faz sentido, já que aplicativos normais não podem solicitar acesso WRITE_GSERVICES, o solicitante indica que o Google Maps requer a permissão READ_GSERVICES para funcionar corretamente. - Também quero adicionar, das 17 edições na duplicata que você chama de 'minha', 14 delas eram de outros usuários além de mim, contribuindo para mais de 5000 caracteres adicionados.
Ryan Conrad
11
Consulte: android.izzysoft.de/applists/perms#WRITE_GSERVICES :) "Permite que o aplicativo modifique o mapa de serviço do Google." Então, @RyanConrad É o mapa de serviço , não o "Google Maps Service". O que exatamente se entende por isso é outra coisa, quanto ao meu conhecimento não existe documentação real.
Izzy
2
Eu voto para reabrir esta questão. Para o raciocínio, consulte (e participe da discussão) Meta: Vamos realmente fechar as perguntas sobre os significados da permissão como duplicatas da "lista geral"?
Izzy

Respostas:

8

Observe que essa permissão é quase completamente indocumentada, portanto, precisamos sentir o caminho para seu verdadeiro significado. Portanto, isso não é de modo algum uma "resposta autorizada" - mas mais ou menos algo entre um "bom palpite" e uma "dedução de outros indicadores".

A descrição oficial dessa permissão (como foi dito, não há documentação adicional) é:

Permite que um aplicativo modifique o mapa de serviço do Google.

Então agora podemos adivinhar o que isso significa. Vamos fazer uma "engenharia reversa" para que isso aconteça. Ryan já deu algumas dicas em seu comentário, com links para duas perguntas do SO:

Lendo nas entrelinhas: sempre que um aplicativo deseja usar (partes do) Google Framework Framework , deve declarar a READ_GSERVICESpermissão necessária - o que é bastante semelhante ao exigido GET_ACCOUNTSse você quiser USE_CREDENTIALS: o aplicativo precisa primeiro garantir que o serviço necessário esteja disponível antes de acessá-lo.

Isso nos dá uma idéia do que deve ser o Mapa de Serviços do Google : algum tipo de índice para os Serviços do Google disponíveis (instalados).

Agora que descobrimos isso, podemos adivinhar qual WRITE_GSERVICESé o objetivo da permissão - e por que ela é protegida pelo systemnível de proteção (ou seja, é concedida apenas aos "aplicativos do sistema" - ou seja, aqueles integrados à ROM, que é sendo instalado na /systempartição): READ_GSERVICESse pretende descobrir quais serviços do Google estão disponíveis, WRITE_GSERVICESdeve ser sua contrapartida para atualizar esse mapa de serviço. Por exemplo, sempre que um novo serviço foi instalado (ou removido), para atualizar o "índice de serviços do Google disponível no dispositivo" - o "Mapa de serviços do Google".

Só uma coisa que me pergunto nesse contexto é: por que essa permissão pertence ao ACCOUNTSgrupo ?


Veja também:

Izzy
fonte
11
Outro ponto por que essa permissão pode estar no ACCOUNTSgrupo: muitos serviços do Google exigem que um login seja utilizável, portanto pode haver alguma verificação cruzada (por exemplo, transmitir o nome da sua conta para verificar se você tem um "usuário ativo" para um determinado serviço, mesmo sem fazer login / transmitir uma senha / token AUTH).
Izzy