Android 6.0 Marshmallow: Tudo o que você precisa saber
Com o aumento da preocupação com privacidade e segurança digital, tendências futuras provavelmente continuarão reforçando esses aspectos iniciados no Android Marshmallow. Novas APIs e políticas podem surgir para tornar ainda mais rigoroso o controle sobre dados sensíveis dos usuários.
Futuro e Tendências
Com o aumento da preocupação com privacidade e segurança digital, tendências futuras provavelmente continuarão reforçando esses aspectos iniciados no Android Marshmallow. Novas APIs e políticas podem surgir para tornar ainda mais rigoroso o controle sobre dados sensíveis dos usuários.
Casos de Uso
Um caso de uso comum para Android Marshmallow envolve aplicativos que precisam acessar dados sensíveis do usuário, como contatos ou localização. Com as novas regras de permissão, os desenvolvedores devem garantir uma experiência fluida para o usuário ao solicitar esses acessos durante a execução do app. Além disso, entender como lidar com cenários onde o usuário nega uma permissão é crucial para evitar bugs e frustrações.
Comparações
Comparado às versões anteriores do Android, Marshmallow representa um salto significativo na privacidade e controle do usuário sobre suas informações pessoais. Enquanto versões anteriores permitiam que os aplicativos solicitassem todas as permissões durante a instalação, Marshmallow introduziu um modelo onde as permissões são solicitadas conforme necessário. Isso aumenta a transparência para o usuário final mas exige mais trabalho dos desenvolvedores.
Fundamentos
O Android 6.0 Marshmallow (API 23) trouxe várias inovações importantes, como o suporte a novos recursos de hardware, melhorias na eficiência energética e mudanças significativas na política de permissões. A função getColor(int id) foi marcada como deprecated nesta versão, exigindo que os desenvolvedores utilizem ContextCompat.getColor() ou getColor(int, Resources) como alternativas. Outra mudança crítica foi a introdução das permissões em tempo de execução, que obrigam os aplicativos a solicitar permissões específicas do usuário durante a execução do app, ao invés de apenas no momento da instalação.
Introdução
O Android 6.0 Marshmallow, lançado em outubro de 2015, introduziu uma série de novos recursos e mudanças significativas na forma como os aplicativos interagem com o sistema operacional. Com mais de 2.163 perguntas no Stack Overflow, é evidente que desenvolvedores enfrentam desafios específicos ao trabalhar com esta versão. Entre as principais mudanças está o sistema de permissões em tempo de execução, que exige uma nova abordagem para solicitar e lidar com permissões do usuário. Este artigo visa fornecer um guia completo e aprofundado sobre o Android 6.0 Marshmallow, abordando desde os fundamentos até casos de uso avançados.
Boas Práticas
Adote boas práticas como explicar claramente ao usuário por que seu app precisa das permissões solicitadas; ofereça feedback imediato após a concessão ou negação das mesmas; salve o estado da concessão das permissões para evitar solicitações repetitivas desnecessárias; e teste extensivamente suas implementações em diferentes dispositivos e cenários.
Implementação
Para implementar corretamente as permissões em tempo de execução no Android Marshmallow, você deve primeiro verificar se a permissão é necessária chamando shouldShowRequestPermissionRationale(). Em seguida, utilize onRequestPermissionsResult() para tratar a resposta do usuário. Se o usuário selecionou "Never ask again" ao negar uma permissão, você pode verificar isso através do método shouldShowRequestPermissionRationale(). Para abrir manualmente a tela de configurações de permissões do app, use a Intent Settings.ACTION_APPLICATION_DETAILS_SETTINGS.
Exemplos de código em android 6.0 marshmallow
// Verifica se uma permissão é necessária
if (shouldShowRequestPermissionRationale(this)) {
// Explicar ao usuário
}
// Solicita a permissão
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE);
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permissão concedida
} else {
// Permissão negada
}
}
}// Abrir tela de configurações de aplicativos
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(❓ Perguntas Frequentes
"getColor(int id) deprecated on Android 6.0 Marshmallow (API 23)?"
Utilize uma Intent com ACTION_APPLICATION_DETAILS_SETTINGS para abrir manualmente a tela de configurações do app.
Android M - How to determine if the user checked "Never ask again" when denying my app's runtime permission request?
Verifique se shouldShowRequestPermissionRationale() retorna false após o usuário ter selecionado "Never ask again".
An Android app remembers its data after uninstall and reinstall?
Sim, usando SharedPreferences com MODE_PRIVATE ou armazenando dados na memória interna do dispositivo.
onRequestPermissionsResult not being called in fragment if defined in both fragment and activity?
Certifique-se de chamar onRequestPermissionsResult() apenas na activity ou use getActivity().onRequestPermissionsResult().
Referências
- [1]Documentação Oficial
Referência completa sobre as mudanças no Android Marshmallow.
- [2]GitHub Repository
Código-fonte oficial com exemplos práticos.
- [3]Tutorial Avançado
Guia detalhado sobre gerenciamento de permissões.
📂 Termos relacionados
Este termo foi útil para você?