Status de arquivos excluídos relatado de forma confiável na nova API do Google Drive para Android (GDAA)
Esse problema está me incomodando desde o início do novo Google Drive Android Api (GDAA). Primeirodiscutido aqui, Esperava que desaparecesse em versões posteriores, mas ainda está lá (a partir de 19/03/2014). Os arquivos / pastas na lixeira do usuário (consultando a ação "Remover" em "drive.google.com") continuam aparecendo nos arquivos
Drive.DriveApi.query(_gac, query), and
DriveFolder.queryChildren(_gac, query)
assim como
DriveFolder.listChildren(_gac)
métodos, mesmo se usado com
Filters.eq(SearchableField.TRASHED, false)
qualificador de consulta ou se eu usar uma construção de filtragem nos resultados
for (Metadata md : result.getMetadataBuffer()) {
if ((md == null) || (!md.isDataValid()) || md.isTrashed()) continue;
dMDs.add(new DrvMD(md));
}
Usando
Drive.DriveApi.requestSync(_gac);
não tem impacto. E o tempo decorrido desde a remoção varia muito, meu último caso durou mais de 12 HORAS. E é completamente aleatório.
O pior é que não posso confiar no EMPTY TRASH em 'drive.google.com', pois não produz resultados previsíveis. Às vezes, o status do arquivo muda para 'isTrashed ()', às vezes desaparece da lista de resultados.
Enquanto eu brincava com esse problema, acabei com o seguinte superawfulhack:
find file with TRASH status equal FALSE
if (file found and is not trashed) {
try to write content
if ( write content fails)
create a new file
}
Nem isso ajuda. O arquivo aparece como íntegro mesmo se o arquivo estiver na lixeira (e seu status foi filtrado duas vezes por consulta e por teste de metadados). Pode até ser escrito com alegria e, quando inspecionado no lixo, é modificado.
A conclusão aqui é que uma correção deve ter prioridade mais alta, pois torna o uso de várias plataformas do Drive não confiável. Ele será descoberto pelos desenvolvedores imediatamente no processo de desenvolvimento / depuração, direcionando-os para longe.