Sei que o Android 6.0 tem novas permissões e sei que posso chamá-los com algo assim
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_WRITE_STORAGE);
}
Hoje vi um aplicativo do Google que precisa de três permissões: contatos, sms e câmera. Ele está criando uma página 1-3 e os reúne ao mesmo tempo para ativar.
Alguém pode me dizer como posso ligar para 4 permissões para ativar ao mesmo tempo, como sms, câmera, contatos e armazenamento?
Exemplo (esqueceu o nome do aplicativo do Google :()
O aplicativo precisa de sms, contatos e câmera
o aplicativo me pediu (e fez uma página de diálogo 1-3) ativar sms, ativar contatos e depois câmera. Portanto, este aplicativo do Google estava reunindo todas as três permissões necessárias e minha pergunta é como posso obter o mesmo?
Respostas:
Basta incluir todas as quatro permissões na
ActivityCompat.requestPermissions(...)
chamada e o Android as pagina automaticamente como você mencionou.Eu tenho um método auxiliar para verificar várias permissões e ver se alguma delas não é concedida.
Ou em Kotlin:
Em seguida, basta enviar todas as permissões. O Android solicitará apenas os que precisar.
fonte
Aqui está um exemplo detalhado com várias solicitações de permissão: -
O aplicativo precisa de 2 permissões na inicialização. SEND_SMS e ACCESS_FINE_LOCATION (ambos são mencionados no manifest.xml).
Estou usando a Biblioteca de suporte v4, preparada para lidar com o pré-Marshmallow do Android e, portanto, não é necessário verificar as versões de compilação.
Assim que o aplicativo é iniciado, ele solicita várias permissões juntas. Se ambas as permissões forem concedidas, o fluxo normal continuará.
ContextCompat.checkSelfPermission (), ActivityCompat.requestPermissions (), ActivityCompat.shouldShowRequestPermissionRationale () fazem parte da biblioteca de suporte.
Caso uma ou mais permissões não sejam concedidas, ActivityCompat.requestPermissions () solicitará permissões e o controle passará para o método de retorno de chamada onRequestPermissionsResult ().
Você deve verificar o valor do sinalizador shouldShowRequestPermissionRationale () no método de retorno de chamada onRequestPermissionsResult ().
Existem apenas dois casos: -
Caso 1: - Sempre que o usuário clicar em Negar permissões (incluindo a primeira vez), ele retornará verdadeiro. Então, quando o usuário negar, podemos mostrar mais explicações e continuar perguntando novamente
Caso 2: -Só se o usuário selecionar “nunca perguntar novamente”, ele retornará falso. Nesse caso, podemos continuar com funcionalidade limitada e orientar o usuário a ativar as permissões das configurações para obter mais funcionalidades, ou podemos concluir a configuração, se as permissões forem triviais para o aplicativo.
CASO 1
CASO-2
fonte
Código pequeno:
Lista de permissões do Android, permissões normais e permissões perigosas na API 23
fonte
}
fonte
É fácil, faça assim
No seu onCreate
Em seguida, verifique o resultado
fonte
Minha abordagem é baseada na resposta de Nicks e espero que seja um pouco mais utilizável para várias permissões (quantas forem necessárias, e não apenas duas). Ele sugere adicionar a classe PermissionsHelper de responsabilidade única:
}
Se uma ou várias permissões necessárias não tiverem sido concedidas pelo usuário, a mensagem detalhada AlertDialog será mostrada a ele.
Exemplo de uso em Atividade:
Espero que isso seja útil para alguém.
fonte
Minha classe de manipulador para solicitar várias permissões. Você pode conferir na íntegra aqui
fonte
A seguinte metodologia é sobre
Crie uma classe "estática" para métodos de permissão
Em MainActivity.java
fonte
Consulte este link para entender completamente a permissão múltipla, também o download completo do código-fonte, clique aqui
fonte
Verificando todas as situações
se negado - mostrando a caixa de diálogo de alerta ao usuário por que precisamos de permissão
Verificando os resultados da permissão
fonte
Não há nada errado com as respostas que solicitam várias permissões, mas o código do resultado de várias permissões não é implementado com muita elegância e pode causar a verificação do resultado errado da permissão.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
é uma lógica terrível para verificar o resultado de várias permissões, não sei por que o Google implementou um código tão terrível.É uma bagunça, especialmente quando você verifica várias permissões. Vamos dizer que você pedir
CAMERA
,ACCESS_FINE_LOCATION
eACCESS_NETWORK_STATE
.Você precisa procurar,
ACCESS_FINE_LOCATION
mas o usuário só concedeuCAMERA
na primeira execução e,grantResults[1]
mas, na segunda execução,ACCESS_FINE_LOCATION
torna-se a permissão com o índice 0. Eu tenho muitos problemas com o usuário não conceder todas as permissões de uma só vez e preciso escrever uma lógica de resultado de permissão tão inútil.Você deve usar
Ou mais simples
no
onPermissionRequestResult
métodofonte
Depois de ver todas as respostas longas e complexas. Quero postar esta resposta.
RxPermission agora é uma biblioteca amplamente usada para pedir permissão em um código de linha.
adicione no seu
build.gradle
Isso não é fácil?
fonte
Eu implementei com sucesso um código simples para permissão múltipla de uma só vez. Siga as etapas abaixo 1: Crie a classe Utility.java como abaixo
2: agora ligue
em sua atividade onCreate () ou de acordo com sua lógica.
3: Agora verifique a permissão antes de executar a operação para uma tarefa específica
4: Agora implemente o método onRequestPermissionsResult () na sua atividade, conforme abaixo
fonte
Curto e grosso :). no que eu acredito.
fonte
fonte
Você pode usar o Dexter
Em
build.gradle
adição:E use-o em sua atividade como:
fonte
Descobri que isso está no exemplo de permissões de tempo de execução do github do Google.
fonte
Verifique a seção "Solicitando várias permissões de cada vez" neste artigo:
O que você precisa saber sobre as permissões do Android M
É muito bem explicado e também pode tocar em outros tópicos relacionados em que você não pensou.
fonte
Use o auxiliar assim (os nomes das permissões não importam).
}
fonte
Maneira simples de pedir várias permissões,
https://github.com/sachinvarma/EasyPermission
Como adicionar :
Como pedir permissão:
Para mais detalhes ->
https://github.com/sachinvarma/EasyPermission/blob/master/app/src/main/java/com/sachinvarma/easypermissionsample/MainActivity.java
Pode ajudar alguém no futuro.
fonte
Em Kotlin:
fonte
Foi o que fiz na minha atividade. Esperar será útil. Estou pedindo permissões de câmera e microfone.
fonte