O Android 11 implementa uma mudança que impedirá que aplicativos de câmera de terceiros apareçam em ações de intenção de seleção de imagem/vídeo.
Atualização 1 (20/08/2020 às 18h15 horário do leste dos EUA): O Google atualizou sua documentação do desenvolvedor para explicar por que aplicativos de câmera de terceiros no Android 11 não conseguem responder a ações implícitas de intenção de imagem/vídeo. Role até o final para obter mais informações. O artigo publicado em 19 de agosto de 2020 está preservado abaixo.
O Android 11 está mudando a forma como os aplicativos interagem aplicativos de câmera de terceiros no seu dispositivo, o que impedirá que eles apareçam nas intenções de seleção de imagem/vídeo. Em versões mais antigas do Android, se um aplicativo quiser permitir que os usuários capturem uma imagem, ele poderá implementar a captura de fotos dentro do aplicativo (usando várias APIs de câmera do Android) ou pode enviar uma intenção que pode ser tratada por um aplicativo de câmera dedicado para capturar a imagem em vez de. Se um aplicativo decidir optar pela última opção, os usuários de versões mais antigas do Android receberão uma caixa de diálogo de desambiguação para selecionar o aplicativo de câmera de sua preferência para capturar a imagem. A caixa de diálogo geralmente mostra todos os aplicativos de câmera instalados no dispositivo do usuário, incluindo aplicativos de câmera de terceiros, desde que sejam escritos para responder a determinadas intenções. No entanto, com o Android 11, a caixa de diálogo incluirá apenas aplicativos de câmera padrão pré-instalados, a menos que os desenvolvedores visem especificamente determinados aplicativos de câmera de terceiros.
A mudança significa efetivamente que, na maioria dos casos, os usuários terão que iniciar manualmente aplicativos de câmera de terceiros quando quiserem tirar uma foto, tornando o uso de aplicativos de câmera de terceiros menos convenientes. Isso também fará com que os usuários culpem os desenvolvedores de aplicativos de câmera de terceiros quando o usuário descobrir que seu aplicativo de câmera favorito não pode mais ser iniciado a partir de outros aplicativos. O Google está implementando essa mudança no Android 11, evitando que aplicativos de câmera de terceiros respondam às seguintes ações intencionais:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google diz que essa mudança foi implementada no Android 11 para proteger a privacidade e a segurança de seus usuários. A empresa não explica como, mas é provável que alguns aplicativos maliciosos tenham se disfarçado de aplicativos de câmera para obter acesso às fotos do usuário. No entanto, a empresa menciona uma solução alternativa para desenvolvedores que permitirá que os aplicativos ainda iniciem aplicativos de câmera de terceiros. A solução alternativa exige essencialmente que os desenvolvedores direcionem um aplicativo de terceiros específico de sua escolha ao enviar uma intenção. Por exemplo, o desenvolvedor de um aplicativo de digitalização de documentos pode enviar uma intenção explícita de lançamento Câmera Adobe Photoshop em vez de enviar uma intenção implícita de abrir o seletor de câmera. O Android 11 faz com que os desenvolvedores não consigam sequer consultar a lista de aplicativos que podem responder aos 3 mencionados acima ações intencionais, o que significa que um desenvolvedor terá que saber com antecedência quais aplicativos de câmera de terceiros deseja apoiar.
Fonte: CommonsWare, Desenvolvedores Android
Através da: Reddit
Agradecimentos ao membro sênior do XDA AndroidDeveloperLB pela dica!
Atualização 1: o Google diz que essa mudança é para manter a privacidade
O Google atualizou sua página de mudanças de comportamento do Android 11 com novas informações sobre o "ações de intenção de mídia exigem câmera padrão do sistema" seção (via A beira). A mudança, explica o Google, é “projetada para garantir que os metadados de localização EXIF sejam processados corretamente com base nas permissões de localização definidas no aplicativo enviando a intenção." Basicamente, o Google está preocupado com o fato de os aplicativos que ainda não receberam acesso explícito à localização estarem fazendo com que os usuários abram aplicativos de câmera que ter recebeu acesso à localização e como a foto resultante passada para o aplicativo pode conter localização EXIF metadados, o aplicativo de chamada poderá ignorar a solicitação de acesso à localização lendo os dados de localização do foto. Se um aplicativo tentar fazer isso no Android 11, ele precisará declarar ACCESS_MEDIA_LOCATION
assim como ACCESS_COARSE_LOCATION
ou ACCESS_FINE_LOCATION
permissões para ler metadados de localização EXIF. (De importância, O Google fechou outra brecha de acesso à localização no Android 10, exigindo que os aplicativos solicitem o ACCESS_MEDIA_LOCATION
permissão se um aplicativo tentar recuperar metadados EXIF não editados de fotos.)
Embora essa mudança de comportamento afete a capacidade dos aplicativos de iniciar o aplicativo de câmera padrão definido pelo usuário devido à idade e ao uso frequente do 3 ações de intenção mencionadas acima, o Google observa que a mudança não afeta todas as ações de intenção que podem iniciar o aplicativo de câmera padrão definido pelo usuário, como como: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, ou android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Porém, essas intenções não têm o mesmo propósito, pois apenas iniciam o aplicativo de câmera padrão, em vez de permitir que uma imagem seja enviada de volta ao aplicativo de chamada.