Permissões no Android
Vamos conhecer nesse capitulo o nosso sistema de permissão que a google adicionou para permissões consideradas perigosas. Qualquer ação que possa por em risco os dados do usuario deve solicitar a permissão para o usuario. Permissões consideras simples/normais são apresentadas assim que voce baixar o aplicativo no google play, solicitações consideradas perigosas o usuario tem que altorizar o aplicativo em tempo de execução.
Link de ajuda: https://developer.android.com/training/permissions/requesting.html?hl=pt-br
Lista com permissões do android: https://developer.android.com/guide/topics/security/permissions.html?hl=pt-br#normal-dangerous
Link do projeto: https://github.com/AndroidDeveloperAcademiaJedi/Aula06-Permissoes
Vamos agora criar um aplicativo de exemplo para testarmos as permissões perigosas. Ao criar o projeto vamos ate o nosso layout e vamos adicionar um Button, esse button vai ser o responsavel por executar a nossa ação considerada perigosa.
Agora vamos no nosso manifest e vamos declarar a nossa permissão. No caso irei realizar uma ação de realizar uma ligação.
<uses-permission android:name="android.permission.CALL_PHONE"/>
Agora vamos realizar a ação de ligação na nossa MainActivity. Nos iremos criar um metodo chamar realizarLigacao, esse metodo sera o responsavel por chamar a ação de realizar uma ligação, na primeira linha do metodo estou criando um Uri, que temos que criar para apontar para alguns recursos do aparelho que queremos acessar, na seguinda linha estou criando a minha intent com a ação de realizar a ligação passando a minha uri, apos isso estou realizando uma verificação para saber se no aparelho existe alguma aplicação que possa responder a ação que estou tentando executar, isso eu faço atraves do metodo resolveActivity que eu passo como parametro o metodo getPackageManager que ele varre o aparelho em busca do aplicativo para executar a minha ação, caso ele ache algum aplicativo eu executo a minha intent, caso ele não achei sera exibido um toast para o usuario.
Agora vamos aplicar o nosso sistema de permissão na nossa MainActivity, nos iremos sobreescreve o metodo onRequestPermissionsResult, e realizar as seguintes alterações no nosso codigo.
No onClick do nosso Button estamos verificando se a permissão de realizar a chamada foi aceita pelo usuario, essa verificação é feita atraves do meotodo checkSelfPermission da classe ActiivtyCompat, caso o usuario não tenha aceitado essa permissão nos iremos pedir para ele aceitar a permissão exibindo um Alert para ele informando a ação que a nossa aplicação ira utilizar, no caso, a ação de ligação, esse processo é feito automatico pelo android. Quando o Alert for exibido para o usuario ao clicar em NEGAR ou PERMITIR o nosso metodo onRequestPermissionResult sera chamado, e nele iremos verificar se o usuario permitiu realizar aquela ação ou não.