FirebaseImageStore in Android
 
  
public class FirebaseImageStore {
    private StorageReference storageReference;
    public FirebaseImageStore() {
        storageReference = FirebaseStorage.getInstance().getReference();
    }
    public void uploadImage(Uri imageUri, String imageName, final OnImageUploadedListener listener) {
        StorageReference imageRef = storageReference.child(imageName);
        imageRef.putFile(imageUri)
                .addOnSuccessListener(taskSnapshot -> {
                    imageRef.getDownloadUrl().addOnSuccessListener(uri -> {
                        listener.onImageUploaded(uri);
                    });
                })
                .addOnFailureListener(e -> {
                    listener.onImageUploadFailed(e.getMessage());
                });
    }
    public void getImage(String imageName, final OnImageDownloadedListener listener) {
        StorageReference imageRef = storageReference.child(imageName);
        imageRef.getDownloadUrl()
                .addOnSuccessListener(uri -> {
                    listener.onImageDownloaded(uri);
                })
                .addOnFailureListener(e -> {
                    listener.onImageDownloadFailed(e.getMessage());
                });
    }
    public void deleteImage(String imageName, final OnImageDeletedListener listener) {
        StorageReference imageRef = storageReference.child(imageName);
        imageRef.delete()
                .addOnSuccessListener(aVoid -> {
                    listener.onImageDeleted();
                })
                .addOnFailureListener(e -> {
                    listener.onImageDeleteFailed(e.getMessage());
                });
    }
    public void updateImage(Uri imageUri, String imageName, final OnImageUploadedListener listener) {
        deleteImage(imageName, new OnImageDeletedListener() {
            @Override
            public void onImageDeleted() {
                uploadImage(imageUri, imageName, listener);
            }
            @Override
            public void onImageDeleteFailed(String message) {
                listener.onImageUploadFailed(message);
            }
        });
    }
    public interface OnImageUploadedListener {
        void onImageUploaded(Uri downloadUri);
        void onImageUploadFailed(String message);
    }
    public interface OnImageDownloadedListener {
        void onImageDownloaded(Uri downloadUri);
        void onImageDownloadFailed(String message);
    }
    public interface OnImageDeletedListener {
        void onImageDeleted();
        void onImageDeleteFailed(String message);
    }
}
        
  
  
  
  FirebaseImageStore firebaseImageStore = new FirebaseImageStore();
Uri imageUri = Uri.fromFile(new File("path/to/image"));
String imageName = "my_image.jpg";
firebaseImageStore.uploadImage(imageUri, imageName, new FirebaseImageStore.OnImageUploadedListener() {
    @Override
    public void onImageUploaded(Uri downloadUri) {
        // Image uploaded successfully, do something with downloadUri
    }
    @Override
    public void onImageUploadFailed(String message) {
        // Image upload failed, handle error
    }
});