[英]How to download a media file from FirebaseStorage to local storage using MediaStore?
[英]How to download a file from Firebase RealtimeDatabase that is saved in the FirebaseStorage using the file location link?
我正在制作一個在線學習管理系統應用程序。 我為課程創建了一個表格,該表格中提供了講座幻燈片。 管理員可以將講座幻燈片上傳到數據庫,用戶應該可以通過 LessonsActivity 下載它們。 當管理員上傳講座幻燈片時,文件將保存在 FirebaseStorage 中,文件位置(文件路徑)將保存在數據庫的課程表中。 我想讓用戶進入他們喜歡的任何主題,並使用我在該活動的布局文件中分配的按鈕下載課程(使用保存在數據庫中的文件路徑。不使用 FirebaseStorage 參考)。
我觀看了一個視頻並嘗試使用 DownloadManager 功能,但它顯示只能直接從 FirebaseStorage 下載文件。
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Lessons> options =
new FirebaseRecyclerOptions.Builder<Lessons>()
.setQuery(LessonsRef.orderByChild("subject_id").equalTo(subject_id), Lessons.class)
.build();
FirebaseRecyclerAdapter<Lessons, LessonsViewHolder> adapter =
new FirebaseRecyclerAdapter<Lessons, LessonsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull LessonsViewHolder holder, int position, @NonNull final Lessons model)
{
holder.lname.setText(model.getName());
downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//download();
}
});
}
@NonNull
@Override
public LessonsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lessons_layout, parent, false);
LessonsViewHolder holder = new LessonsViewHolder(view);
return holder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
GridLayoutManager mGridLayoutManager = new GridLayoutManager(LessonsActivity.this, 1);
recyclerView.setLayoutManager(mGridLayoutManager);
}
這是我的數據庫結構。
try {
final File localFile = File.createTempFile("images", "jpg");
storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmap = BitmapFactory.decodeFile(localFile.getAbsolutePath());
mImageView.setImageBitmap(bitmap);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
});
} catch (IOException e ) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.