Android Studioでアプリを作成しており、Firebase Storageを使用してユーザー情報を個々のテキストファイルに保存し、後でアプリのユーザーダッシュボードにアップロードしています。これを行うためのすべてのコードを作成し、Firebaseのドキュメントにできる限り従いました。アプリを実行すると(Motorola moto e5電話でテスト済み)、すべてが完全に実行され、ユーザー情報を含むファイルが作成されます。次に、Firebase Storageセクションにアップロードすることになっているので、破棄する必要があります。私は最初と最後のイベントが起こったことを知っています。
問題
ただし、Firebaseにアクセスしてファイルが存在することを確認すると、存在しません。そこで、Android Studioがエラーを返し、エラーがなく、すべてがスムーズに実行されたかどうかを確認しますが、アップロードされるはずのファイルがFirebaseに表示されません。それで、私はインターネット全体を見て、4mごとに、ドキュメントごとにドキュメントを見て、それをすべて試しました。私が見つけられなかった私を助けるかもしれない何かを見つけたら、親切にリンクを共有してください。また、問題が何であるかを知っている場合は共有してください。
トラブルシューティング方法
より具体的には、これらは私が試したいくつかのことです:
build.gradle
ファイルの依存関係のSDKバージョンを変更し、それらがすべて最新であることを確認し、古いものも試してみましたfile.delete();
行を削除しようとしましたコード
「目標」を作成する必要がありますと呼ばれるこの方法では、ユーザーはというファイルに自分の入力を保存することで達成したい0.txt
、1.txt
、2.txt
などなど。次に、メソッドはファイルをFirebase Storageにアップロードする必要があり、そこで問題が発生します。データベースには表示されません。
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();
}
どんなアイデアも高く評価されます。
putFile
Firebaseを呼び出すと、バックグラウンドでデータのアップロードが開始されるため、ユーザーは引き続きアプリを使用できます。ただし、コードはdelete
その後すぐにローカルファイルを呼び出します。つまり、Firebaseがアップロードを完了する(または開始する)前にローカルファイルを削除します。
秘訣は、Firebaseのドキュメントに示されているようにアップロードの進行状況を監視し、アップロードが完了した後でのみローカルファイルを削除することです。
そのドキュメントの例に基づいて:
// 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();
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加