Skip to content

Most visited

Recently visited

navigation

Permissões e dados do usuário

As permissões protegem informações confidenciais disponíveis em um dispositivo e só devem ser usadas quando o acesso às informações é necessário para o funcionamento do aplicativo.

Este documento fornece uma visão geral de alto nível do funcionamento das permissões no Android para que você possa tomar decisões melhores e mais informadas sobre as permissões que solicitar. As informações neste documento não são específicas ao caso de uso e evitam discussões complexas de baixo nível sobre o código subjacente.

Para obter recomendações específicas sobre como gerenciar permissões, consulte Práticas recomendadas para permissões de aplicativos. Para obter práticas recomendadas para o uso de identificadores exclusivos no Android, consulte Práticas recomendadas para identificadores exclusivos. Para obter detalhes sobre como trabalhar com permissões no seu código, consulte Trabalho com permissões do sistema.

Introdução

Todos os aplicativos Android devem ter um arquivo de manifesto que apresente as informações essenciais sobre o aplicativo para o sistema Android. O sistema Android também exige que os aplicativos solicitem permissão quando quiserem acessar informações confidenciais do dispositivo ou do usuário e essas solicitações devem ser documentadas antecipadamente como parte do manifesto do seu aplicativo. Além disso, o acesso a informações confidenciais pode afetar o comportamento do usuário, então é importante fazer solicitações apenas quando as informações em questão forem necessárias para o funcionamento do seu aplicativo.

Grupos de permissões

As permissões no Android são organizadas em permission groups que agrupam permissões relacionadas aos recursos de um dispositivo. De acordo com esse sistema, as solicitações de permissão são processadas no nível do grupo e um único grupo de permissões corresponde a várias declarações de permissão no manifesto do aplicativo. Por exemplo, o grupo SMS inclui as declarações READ_SMS e RECEIVE_SMS.

Esse sistema é mais simples e informativo para os usuários. Quando um aplicativo recebe permissão para acessar o grupo, ele pode usar chamadas de API nesse grupo e os usuários com a atualização automática ativada não serão solicitados a conceder permissões adicionais, pois já concederam acesso ao grupo. Esse agrupamento de permissões permite que o usuário faça escolhas mais significativas e informadas sem ser sobrecarregado por solicitações de permissão complexas e técnicas.

Isso também significa que, quando você solicita acesso a uma chamada de API específica ou consulta um provedor de conteúdo por trás de uma permissão, o usuário recebe uma solicitação para conceder permissão para o grupo inteiro em vez de para a chamada de API específica. Por exemplo, se você solicitar a permissão WRITE_CALL_LOG, o usuário será solicitado a conceder acesso ao grupo PHONE (no nível de API 23 e superiores), que é composto pelas permissões READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIP e PROCESS_OUTGOING_CALLS e todos os métodos associados.

Uma consequência do agrupamento de permissões é que uma só chamada de API no seu aplicativo pode ter um efeito multiplicador em termos do número de permissões solicitadas por seu aplicativo.

  1. Chamada de API →
  2. Aciona uma solicitação de acesso ao grupo de permissões
  3. A solicitação bem-sucedida concede acesso a todas as permissões do grupo (se a atualização automática estiver ativada) →
  4. Cada permissão concede acesso a todas as APIs da permissão em questão

Como outro exemplo, vamos pressupor que eu aplicativo usa um ou mais métodos TelephonyManager, como:

TelephonyManager.getDeviceId()
TelephonyManager.getSubscriberId()
TelephonyManager.getSimSerialNumber()
TelephonyManager.getLine1Number()
TelephonyManager.getVoiceMailNumber()

Para usar esses métodos, a permissão READ_PHONE_STATE deve ser declarada no manifesto do aplicativo e o grupo de permissões associado, PHONE, será exibido ao usuário. Isso é importante, pois significa que o usuário será solicitado a conceder permissão para o grupo relevante e todas as permissões e chamadas de API associadas, em vez de para a chamada de API específica que você estiver chamando.

Para obter um mapeamento completo entre as permissões e os grupos associados, consulte o documento específico de versão apropriado abaixo:

Solicitações de permissão e downloads de aplicativos

No momento, estou usando a permissão READ_PHONE_STATE no Android para pausar meu reprodutor de mídia quando uma chamada é recebida e para retomar a reprodução quando a chamada é concluída. Essa permissão parece assustar muitas pessoas...1

Pesquisas mostram que, entre aplicativos que são praticamente idênticos (por exemplo, em termos de recursos, reconhecimento da marca), aqueles que solicitam menos permissões recebem mais downloads. Existem fontes publicamente disponíveis que atribuem notas para aplicativos com base em seu uso de permissões e permitem que os usuários comparem aplicativos relacionados por pontuação. Essas notas existem para muitos dos atuais aplicativos Android e os usuários estão atentos às classificações relacionadas.

Um estudo2, no qual os usuários foram apresentados a dois aplicativos sem marca com classificações semelhantes e que tinham os mesmos recursos, mas diferentes conjuntos de solicitações de permissão, mostrou que os usuários, em média, tinham uma probabilidade 3 vezes maior de instalar o aplicativo com menos solicitações de permissão. E um estudo semelhante 3 mostrou que os usuários tinham, em média, 1,7 vezes mais probabilidade de selecionar o aplicativo com menos solicitações de permissão.

Por fim, o uso de permissões não é uniformemente distribuído entre os aplicativos em uma categoria similar do Google Play. Por exemplo, 39,3% dos aplicativos de jogos de arcade da Play Store não solicitam permissões que são exibidas ao usuário, enquanto apenas 1,5% dos jogos de arcade solicitam o grupo de permissões Phone (veja a Figura 1).

Figura 1. Distribuição de grupos de permissões na categoria de jogos de arcade.

Os usuários que compararem seu aplicativo a aplicativos semelhantes podem determinar que ele faz solicitações de permissão incomuns para a categoria. Neste caso, jogos de arcade que acessam o grupo de permissões Phone. Consequentemente, eles podem instalar um aplicativo semelhante da mesma categoria para evitar essas solicitações.4

Tendência de redução nas solicitações de permissão

Uma análise recente dos aplicativos da Play Store ao longo do tempo indicou que muitos desenvolvedores reduzem o número de permissões após a publicação inicial de seus aplicativos, sugerindo que eles podem estar mais atentos a quais grupos de permissão declaram.

Figura 2. O uso de permissões populares por parte dos desenvolvedores foi reduzido ao longo do tempo.

O gráfico na Figura 2 ilustra essa tendência. Tem ocorrido uma redução estável no percentual médio de solicitação de aplicativos de desenvolvedores de pelo menos um dos três grupos de permissões mais populares na Play Store (READ_PHONE_STATE, ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION). Esses resultados indicam que os desenvolvedores estão reduzindo as permissões que seus aplicativos solicitam em resposta ao comportamento do usuário.

O resultado é que fornecer os mesmos recursos ao usuário com acesso mínimo a informações confidenciais gera mais downloads do seu aplicativo. Para obter recomendações específicas sobre como fazer isso, consulte Práticas recomendadas para permissões de aplicativos.

Referências

[1] Fala do desenvolvedor no StackOverflow. (fonte)

[2] Using Personal Examples to Improve Risk Communication for Security and Privacy Decisions, por M. Harbach, M. Hettig, S. Weber e M. Smith. Nos procedimentos do ACM CHI 2014.

[3] Modeling Users’ Mobile App Privacy Preferences: Restoring Usability in a Sea of Permission Settings, por J. Lin B. Liu, N. Sadeh e J. Hong. Nos procedimentos do SOUPS 2014.

[4] Teens and Mobile Apps Privacy. (fonte)

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Siga o Google Developers no WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)