Por que tantos aplicativos requerem permissão para ler o estado e a identidade do telefone? Especificamente:
Phone calls
read phone state and identity
Por exemplo, a Quickpedia é um portal da Wikipedia, mas deseja acesso ao telefone. Qual a explicação para isso?
permissions
privacy
Nam G VU
fonte
fonte
Respostas:
Ele permite que o aplicativo leia um ID exclusivo (um identificador de telefone chamado IMEI ) associado ao seu telefone.
Portanto, pode ajudar na proteção contra cópia ou na tentativa de rastrear o número de usuários.
fonte
Há outro motivo para isso além do ID exclusivo. Eu acho que metade dos aplicativos não acessa esses valores. O problema é que, para uma versão inferior ao Android 1.5, essa permissão não existe. Todos poderiam acessar esses valores sem solicitar algo.
Portanto, se você criar um aplicativo compatível com a versão 1.5, essa permissão será adicionada automaticamente para simular a menor segurança do Android 1.5, pois você poderá ignorá-la na maioria das vezes, pois tende a ser apenas um problema de compatibilidade.
fonte
O motivo é que o Android 1.5 e versões anteriores não exigiam que o aplicativo solicitasse especificamente essas permissões e as concediam automaticamente. Desde o Android 1.6, essas permissões devem ser solicitadas especificamente pelo aplicativo. No entanto, se você especificar que seu aplicativo pode ser executado em dispositivos com Android 1.5 ou menos, essa permissão será adicionada ao aplicativo por padrão e o mercado mostrará essa permissão como solicitada pelo aplicativo.
Portanto, em resumo, o aplicativo pode não estar realmente acessando seu "estado e identidade do telefone", mas se o desenvolvedor especificar que seu aplicativo pode ser executado em dispositivos com 1,5 ou menos, essa permissão será mostrada.
fonte
Esta questão está me incomodando há algum tempo. Então agora, finalmente, decidi ir ao fundo da questão.
O Playstore tem um aplicativo chamado permission.READ_PHONE_STATE , que solicita
READ_PHONE_STATE
como a única permissão e não faz nada além de imprimir todos os dados que pode acessar com ou sem usá-lo. Instalei isso no meu LG Optimus 4X , enraizado no Android 4.0.3, e revoguei a permissão usando o LBE. Resultados bastante interessantes, como mostram as seguintes capturas de tela:Informações coletadas pela permissão do aplicativo.READ_PHONE_STATE (clique nas imagens para obter variantes maiores)
Como você pode ver facilmente, mesmo algumas informações do desenvolvedor, embora inacessíveis sem a permissão, eram acessíveis gratuitamente: o número da minha caixa de correio (observação: Sim, é o correto; com o meu provedor esse é o atalho ao discar do seu próprio dispositivo, para que eu possa exibi-lo livremente;) No final da primeira captura de tela, você vê:
CALL_STATE_IDLE
. Portanto, nenhuma ligação é recebida, efetuada ou em andamento. Nenhum aplicativo precisa dessa permissão para se "background" próprio nas chamadas recebidas.É até possível ver se os dados móveis estão ativos (
DATA_DISCONNECTED
; eu estava no WiFi ao tirar as capturas de tela, como você pode ver na barra de notificação), em qual país você está, seu provedor (incluindo alguns dados técnicos sobre ele), se você está usando um cartão SIM ou em roaming.As únicas coisas que não estão acessíveis são os dados de identificação: IMEI, SIMID, IMSI e seu próprio número de telefone.
Conclusão: Essa permissão é necessária apenas para fins de identificação, nada mais.
Por que tantos aplicativos precisam?
Probabilidades exatamente nessa ordem, IMHO.
1 Nota da postagem de Dan no chat :
Como é difícil para o usuário saber para que o aplicativo está usando o IMEI, peça ao desenvolvedor que explique primeiro.
2 Outro desenvolvedor acabou de me apontar uma diferença sutil: embora a permissão não seja necessária para ler o status da chamada atual (como eu indiquei), pode ser necessário registrar um ouvinte para ser notificado sobre as alterações da chamada status (consulte: Detectando chamadas telefônicas recebidas e efetuadas no Android ). Embora pareça haver meios de lidar com isso automaticamente quando o sistema ligar
onPause
, isso nem sempre é adequado: pense no seu despertador. Talvez você não queira que isso seja interrompido automaticamente em uma chamada recebida - especialmente quando o seu perfil estiver definido para o volume da campainha "mudo".3 Mais uma vez, uma correção de Dan : você obtém a permissão extra padrão se a versão "alvo" do seu aplicativo for 1,5. Se você segmentar uma versão posterior, mas a sua versão mínima for 1,5, você não receberá a permissão automaticamente.
Atualizações
READ_PHONE_STATE
no que é necessário para: a) detectar chamadas recebidas e relacionadas (telefonia), e uma segunda permissão para os detalhes de identificação (IMEI, IMSI, etc.). Aberto em 11/2011, ainda não foi trabalhado. Marque se estiver interessado :)READ_PHONE_STATE
permissão, como por exemplo, apontado por Arno Welzel . Como uma ligação recebida acionaria a campainha, esse evento poderia ser usadoonAudioFocusChange()
, o que não requer nenhuma permissão especial: se acionado por isso, o aplicativo poderia verificar o CallState (novamente, sem nenhuma permissão especial necessária) para ver se há um chamada recebida.fonte
onPause()
foi o que discutimos no chat para isso! Mas o usoonAudioFocusChange()
pode ser menos caro ainda (a pequena votação então pode ser ignorável).Muitos editores de anúncios usam essa permissão para obter o ID do telefone para todos os tipos de fins de rastreamento. Existem outras maneiras de obter um ID exclusivo, mas infelizmente eles são problemáticos nas versões mais antigas do Android (a história é mais complicada, consulte por exemplo, https://stackoverflow.com/questions/2785485/is-there-a-unique-android- ID do dispositivo ou http://android-developers.blogspot.com/2011/03/identifying-app-installations.html para uma história mais completa).
Portanto, se o aplicativo usa anúncios, é bem provável que o aplicativo em si não precise da permissão READ_PHONE_STATE, apenas o provedor do anúncio.
fonte