.
Hoje, estava trabalhando com meu antigo programa, que havia feito em dezembro de 2020. Por algum motivo estranho, atrasei o processo de desenvolvimento do meu aplicativo.
Um aplicativo estava funcionando há alguns meses, quando de repente o aplicativo travou com o erro Exceção ‘falha ao abrir: EACCES (Permissão negada)’.
O fluxo de trabalho do aplicativo era bastante simples. Quando o usuário clicar no “Botão Compartilhar” programaticamente, o aplicativo fará uma captura de tela e usará a intenção explícita para enviar capturas de tela usando qualquer aplicativo compatível com o compartilhamento de imagens.
Fiz uma pausa por um momento e comecei a pensar: O que aconteceu de repente com o projeto? Se você ler o erro, ele diz que algo está errado com as permissões.
Instantaneamente, verifiquei o código de permissões e descobri que estava tudo bem. Quando abri o manifesto do Android, encontrei o culpado: “WRITE_EXTERNAL_STORAGE não fornece mais acesso de gravação ao segmentar o Android 10+.”
O problema começa a ficar mais claro.
eu abro build.gradle e a versão de destino verificada são alteradas para API 30 (Android 11) de alguma forma.

Como de costume, eu fiz pesquisar e descobriu que o destino do aplicativo para O SDK 29 ou posterior usa armazenamento com escopo como opção padrão.
Se você está pensando, O que é armazenamento com escopo? Vou esclarecer para você que o Scoped Storage define um limite no acessar arquivo.
Por exemplo, se meu aplicativo XYZ estiver armazenado em um local de diretório específico e quiser fazer upload de fotos de qualquer outro diretório que não seja o diretório do aplicativo, não terei permissão para acessar o arquivo de acordo com a nova política do Google.
Então temos o problema; diga-me, Gagan, como resolver isso? Você pode usar o MediaStore método ou simplesmente use o Política de armazenamento legado.
Como resolver o erro acima usando o LegacyStorage?
Precisamos passar a única linha de código, que irá desligar a bandeira para Android 10+ dispositivos, e você terá permissão para usar LegacyStorage.
Vá para o painel do projeto, clique em AndroidManifesto, e adicione o código destacado dentro
<manifest ... > <application ... android:requestLegacyExternalStorage="true" ..> ... </application> </manifest>
As alterações devem ser como esta abaixo da imagem de exemplo.

Depois de adicionar requestLegacyExternalStorage = “verdadeiro” debaixo de
Para o Android 12, os usuários precisam adicionar mais uma tag em AndroidManifest.xml aquilo é “android:exportado=”verdadeiro” para o Atividade principal.

Execute o aplicativo e as funções do aplicativo começarão a funcionar novamente.
Leia também: Como corrigir exposição além do aplicativo por meio de ClipData.Item.getUri
Embrulhar
é isso pra resolver Exceção ‘falha ao abrir: EACCES (Permissão negada)’. Se você ainda estiver enfrentando problemas ao seguir este guia, informe-nos na seção de comentários.
Para facilitar, carregamos um projeto de amostra no repositório GitHub. Para clonar o repositório clique neste link.
Quais são seus pensamentos sobre este artigo?

Um homem com uma tecnologia efusiva que explorou algumas das incríveis coisas da tecnologia e está explorando mais. Enquanto avançava, tive a chance de trabalhar no desenvolvimento Android, Linux, AWS e DevOps com várias ferramentas de código aberto.
.