Durante o desenvolvimento de um aplicativo Android destinado a todas as versões acima da 4.1, observei que desinstalar e instalar o aplicativo novamente não limpa seus dados.
O aplicativo foi projetado para armazenar os detalhes solicitados em sua primeira tela. Após desinstalar e instalar novamente no SO versão 4.4.4, o aplicativo solicita que o usuário preencha os dados, o que é normal. No entanto, na versão 6.0, a mesma sequência de instalação / desinstalação recupera os dados originalmente introduzidos.
Eu tentei garantir, visitando /data/data/my package folder
para ver o banco de dados desapareceu após a desinstalação e, de fato, essa pasta é excluída durante a desinstalação.
Tentei excluir o aplicativo visitando a página de configurações, através do Titanium Backup e os resultados são os mesmos. O dispositivo está enraizado no Nexus 5 executando a v6.0.
Qual poderia ser a razão para esse comportamento estranho?
fonte
A resposta de greywolf82 está correta, mas quero adicionar algumas informações a isso.
Ao desenvolver meu aplicativo Android (usando o Xamarin), notei que sempre que eu reiniciava o aplicativo a partir do Visual Studio, meus dados voltavam aos dados de alguns meses atrás. Não importava se eu simplesmente parei e o executei novamente do VS, ou se eu desinstalei completamente o aplicativo e o reinstalei.
Também é importante notar que nunca dissemos explicitamente ao aplicativo para armazenar um backup.
O backup também parecia sobrescrever dados mais recentes ao iniciar a partir do Visual Studio, e temos relatórios de usuários usando a versão do nosso aplicativo e também obtendo dados mais novos sobrescritos pelos backups.
Como não sei exatamente quando ocorrem backups e restaurações, esse recurso parece causar apenas problemas.
Modificamos nosso AndroidManifest conforme mostrado no seguinte xml:
Uma vez que explicitamente definimos o valor como false, tudo parece funcionar. Eu esperava que esse fosse um recurso de aceitação, mas ... parece que ele pode estar ativado por padrão para aplicativos que não especificam o valor de qualquer maneira.
fonte
Você deve verificar as configurações de backup e redefinição do dispositivo e desativar a restauração automática (ao reinstalar um aplicativo, as configurações e os dados de backup serão restaurados.)
Desativar o backup automático é diferente da restauração automática. Se você acha que será útil ativar o backup automático para seu aplicativo, faça isso. Mas se você acha que isso fará com que os usuários finais que não estão cientes de que o recurso de restauração automática do dispositivo esteja ativado, fique à vontade para desativá-lo.
No meu caso, desativei o recurso allowBackup, mas como já tinha um backup da versão anterior na nuvem, ele continuava restaurando.
Veja a imagem como referência para um dispositivo Samsung no Android 6.0. Outros dispositivos e versões podem ter uma tela diferente. Veja a imagem abaixo.
Configuração de restauração automática em Backup e redefinição
fonte
Recentemente, eu precisei tirar proveito desses recursos, fui capaz de descobrir a documentação e, após testes extensivos, é isso que pude deduzir:
Android: allowbackup - fará backup dos dados do aplicativo local no dispositivo em que está localizado.
Android: fullBackupContent - é usado em conjunto com a API de restauração de backup do Google e PODE ser controlado por um arquivo xml para especificar exatamente o que fazer backup, bem como uma classe BackupManager que você pode implementar para ter mais controle sobre o processo.
No entanto, a documentação declara, e confirmei com o teste, que uma restauração só ocorrerá quando o dispositivo for restaurado e o processo de dados do aplicativo de restauração for acionado. OU também será restaurado quando o aplicativo for carregado de lado pelo adb, que é o que fazemos quando executamos o aplicativo para testar ou depurar nossos dispositivos pelo Android Studio. Observe que, se você definir android: allowbackup, mas não configurar android: fullBackupContent com um código de API do Google, os dados do aplicativo serão armazenados apenas localmente, enquanto que se você o configurou corretamente, se o backup for feito e você obterá um novo dispositivo, os aplicativos os dados foram armazenados na nuvem para que possam ser restaurados em um novo dispositivo.
fonte
A adição de android: allowBackup = "false" na tag do aplicativo no arquivo Manifest resolveu meu problema.
Aqui está a documentação do Android para fazer backup de dados do usuário com o Backup automático
fonte
Basta alterar android: allowBackup = "true" para android: allowBackup = "false" no manifestiest.xml. Será trabalhado.
fonte
Além disso, descobrimos que no Android 9 (em um dispositivo HMD Nokia) os ativos eram mantidos, mesmo após a exclusão do aplicativo pela interface e pelo adb.
A resposta da adição:
android:allowBackup="false" android:fullBackupOnly="false"
Obviamente, essa não é uma resposta nova - mas uma observação para pessoas que estavam na mesma posição que nós.
fonte
Se você está direcionando o Android 10, deve inserir a
android:hasFragileUserData="true"
tag do aplicativoAndroidManifest.xml
Consulte https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html
fonte