Estou fazendo um aplicativo no Android Studio e estou usando o Firebase Storage para armazenar informações do usuário em arquivos de texto individuais, para depois serem carregados no painel do usuário do aplicativo. Eu escrevi todo o código para fazer isso e segui a documentação do Firebase da melhor maneira possível. Quando executo meu aplicativo (testado no meu celular Motorola moto e5) tudo funciona perfeitamente, e então é criado o arquivo com as informações do usuário. Em seguida, ele deve ser carregado para a seção Firebase Storage e, em seguida, deve ser destruído. Eu sei que o primeiro e o último eventos aconteceram.
Problema
No entanto, quando entro no Firebase para verificar se o arquivo está lá, ele não está. Então, vou verificar se o Android Studio retornou algum erro e não vejo erros e se tudo correu bem, mas não vejo os arquivos no firebase que deveriam ser carregados . Então procurei em toda a internet, quatrom após quatrom, documentação após documentação, e tentei de tudo. Se você encontrar algo que possa me ajudar que eu não encontrei, por favor, compartilhe o link. Além disso, se você souber qual é o problema, compartilhe.
Métodos de solução de problemas
Para ser mais específico, estas são algumas coisas que tentei:
build.gradle
arquivo e certifique-se de que estão todas atualizadas e tente as antigasfile.delete();
linhaCódigo
Este método quando chamado deve criar uma "meta" o usuário quer realizar, salvando a sua entrada em um arquivo chamado 0.txt
, 1.txt
, 2.txt
e assim por diante. Em seguida, o método deve fazer upload do arquivo para o Firebase Storage, e é aí que está o problema. Ele não aparecerá no banco de dados.
private void createGoal(String activity, String timeframe, String number, String unit) throws IOException {
//creates an instance of the Main Dashboard class inorder to access the variable counterString.
MainDashboard dBoard = new MainDashboard();
//Names the 0.txt, 1.txt, 2.txt, and so on
file = new File(dBoard.counterString + ".txt");
//Creates the actual file
file.createNewFile();
//Creates the writer object that will write to the file
FileWriter writer = new FileWriter(file);
//Writes to the text file
writer.write(activity + " : " + "0 / "+ number + " " + unit + " in " + timeframe);
//Closes the Writer
writer.close();
//Creates a Uri from the file to be uploaded
upload = Uri.fromFile(new File(activity + ".txt"));
//Uploads the file exactly as the documentation says, but it doesn't work
UploadTask uploadTask = storageRef.putFile(upload);
//Deletes the file from the local system
file.delete();
}
Quaisquer ideias são apreciadas.
Ao chamar, o putFile
Firebase começa a enviar os dados em segundo plano, para que o usuário possa continuar a usar o aplicativo. Mas seu código chama imediatamente delete
o arquivo local depois disso, o que significa que você está excluindo o arquivo local antes que o Firebase conclua (ou possivelmente comece) o upload.
O truque é monitorar o andamento do upload, conforme mostrado na documentação do Firebase, e excluir o arquivo local apenas quando o upload for concluído.
Com base no exemplo dessa documentação:
// Listen for state changes, errors, and completion of the upload.
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
System.out.println("Upload is " + progress + "% done");
}
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
System.out.println("Upload is paused");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Handle successful uploads on complete
// ...
//Deletes the file from the local system
file.delete();
}
});
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras