O Android 11 torna o uso do Google Fotos irritante, mas pode haver uma solução

Graças ao armazenamento com escopo, o Android 11 em certos dispositivos torna um pouco inconveniente excluir imagens no Google Fotos, mas pode haver uma solução.

Não temos como saber quantos dispositivos no mercado rodam Android 11 desde o Google não publica mais estatísticas de distribuição, mas provavelmente há dezenas de milhões agora que empresas como Xiaomi e Samsung tiveram tempo de levar a atualização para muitos de seus modelos. Se o seu dispositivo executa o Android 11 e você usa o Google Fotos, é possível que você tenha encontrado uma mudança bastante irritante na maneira como o aplicativo lida com a exclusão e restauração de imagens. Em vez de simplesmente selecionar as imagens e vídeos que deseja excluir, clicar no ícone da lixeira e, em seguida, tocar no botão "mover para a lixeira", agora você terá que tocar em um prompt extra para dar permissão ao Google Fotos para excluir ou restaurar seu arquivos.

Para aqueles que tiram muitas fotos e vídeos, pode ser irritante ter que conceder permissão ao Google Fotos para excluir ou restaurar um arquivo. E como apontado por

Polícia Android, tocar em um botão extra não é o único problema com o qual você pode ter que lidar. Se você usa o Google Fotos em outro dispositivo e deseja editar ou descartar um arquivo enviado de seu telefone com Android 11, o aplicativo pode solicitar que você revise as "alterações fora de sincronia". Isso pode se tornar irritante rapidamente se o Google Fotos continuar solicitando que você revise as alterações que acabou de fazer em outra plataforma.

A etapa extra para excluir ou restaurar um arquivo não era necessária no Android 10, mas agora é necessária no Android 11 devido à aplicação do armazenamento com escopo. Antes do armazenamento com escopo definido, o acesso a todo o diretório de armazenamento externo era gerenciado por um único permissão, tornando difícil limitar quais aplicativos podem acessar seus documentos, imagens ou vídeos. Com o armazenamento com escopo implementado, o Android limita a quantidade de acesso que um aplicativo pode ter a arquivos confidenciais sem o consentimento explícito do usuário. Você pode encontrar mais detalhes sobre armazenamento com escopo neste artigo ou veja o gráfico do Google abaixo para um resumo das mudanças.

Enquanto eles estavam ocupados restringindo o acesso ao armazenamento no Android 11, o Google também melhorava as APIs existentes para melhorar a experiência do usuário. Por exemplo, os aplicativos direcionados ao Android 11 podem usar a API MediaStore para lixo um arquivo em vez de excluí-lo. Para mover um arquivo para a lixeira, porém, o aplicativo precisa solicitar ao usuário que conceda acesso de gravação. Como a maioria das imagens e vídeos que você adiciona ao Google Fotos do seu telefone veio de um aplicativo diferente – como o aplicativo de câmera de estoque - o Photos precisa pedir permissão antes de mover um arquivo de ou para o lixo. No entanto, o Google Fotos não pede permissão para jogar arquivos na lixeira se você estiver usando um telefone Pixel com Android 11 instalado. No entanto, ele pede permissão em basicamente todos os outros dispositivos com Android 11, incluindo a maioria dos dispositivos Samsung, Xiaomi, OnePlus e ASUS. O que da?

O motivo é que o aplicativo da galeria do sistema não está sujeito a restrições de armazenamento com escopo. Isso significa que o aplicativo Stock Gallery pode abrir, editar ou excluir imagens e vídeos sem permissão explícita. O Google Fotos está predefinido como o aplicativo de galeria do sistema em telefones Pixel, mas a maioria dos OEMs predefiniu seu próprio aplicativo de galeria. Além disso, não há nenhuma configuração voltada ao usuário para alterar o aplicativo da galeria do sistema, nem mesmo na tela de “aplicativos padrão” do Android. No entanto, há é uma maneira oculta de alterar o aplicativo da galeria do sistema, mas há uma grande advertência: apenas um aplicativo do sistema pode ser definido como aplicativo da galeria do sistema. Isso significa que apenas telefones que já tem o Google Fotos pré-instalado como aplicativo do sistema pode aproveitar esse truque.

Poucos telefones atendem a esse critério, mas com base em nossos testes, podemos confirmar isso funciona na maioria dos telefones OnePlus e em alguns telefones ASUS. Este método não funcionou em nenhum dos telefones Samsung em que testamos e também não funcionou em um Xiaomi Mi 10 Pro. Se você tiver acesso root ou estiver executando uma ROM personalizada, esse método pode funcionar no seu dispositivo depois de sistematizar o aplicativo Google Fotos, mas testamos esse método apenas em dispositivos padrão.

Como (talvez) tornar o Google Fotos o aplicativo da galeria do sistema

Os créditos vão para Kieron Quinn (Quinny899 nos Fóruns XDA) por compartilhar esse truque!

A primeira coisa que você precisa fazer é instalar o ADB no seu PC. Temos um guia atualizado sobre como fazer isso aqui. Depois de configurar o ADB, digite o seguinte comando:

adbshellcmdroleadd-role-holderandroid.app.role.SYSTEM_GALLERYcom.google.android.apps.photos

Se você não vir um erro, provavelmente funcionou! Você pode verificar rapidamente se funcionou tirando uma foto e tentando excluí-la no Google Fotos. Alternativamente, você pode executar o seguinte comando:

adb shell dumpsys role

...e verifique se o "titular" de "android.app.role. SYSTEM_GALLERY" é "com.google.android.apps.photos" (o nome do pacote do Google Fotos).

Se a sua saída corresponder ao texto destacado no retângulo vermelho, funcionou.

O que esse comando faz?

O Android 10 adicionou um nova API chamada "Roles". Quando um aplicativo tem uma determinada função, ele recebe automaticamente acesso a determinadas permissões. Por exemplo, o Função SYSTEM_GALLERY concede automaticamente a um aplicativo "acesso total de leitura e gravação a todos os arquivos de imagem e vídeo no armazenamento externo, incluindo acesso à localização metadados." A função SYSTEM_GALLERY só pode ser concedida a aplicativos do sistema e seu detentor padrão é definido pelo Android valor de configuração "config_systemGallery". Como explicamos anteriormente, a maioria dos OEMs predefiniu esse valor para o nome do pacote correspondente ao seu próprio aplicativo de galeria. Este valor não pode ser alterado sem modificar a estrutura ou instalar uma sobreposição, sendo que ambos requerem acesso root.

no entanto é possível adicionar outro aplicativo como detentor da função SYSTEM_GALLERY, mas apenas se esse aplicativo também for um aplicativo do sistema. Isso é possível em muitos telefones OnePlus e alguns telefones ASUS porque esses OEMs aparentemente pré-instalaram o Google Fotos no nível do sistema, e não no nível do usuário. Por causa disso, o aplicativo Google Fotos está qualificado para ocupar a função SYSTEM_GALLERY e aproveitamos da interface oculta do shell RoleManager do Android para conceder acesso a permissões que normalmente não podem ser garantido. Se você tentar conceder a função SYSTEM_GALLERY a um aplicativo que não seja do sistema, verá o seguinte erro no logcat:

ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY

Infelizmente, não encontramos uma maneira de contornar essa limitação, mas se encontrarmos, compartilharemos nosso método com a comunidade. É claro que preferiríamos que o Google simplesmente tornasse a função SYSTEM_GALLERY definível pelo usuário, em vez de limitada à escolha do OEM.