Skip to content

Instantly share code, notes, and snippets.

@crazy-diya
Last active August 7, 2020 06:49
Show Gist options
  • Save crazy-diya/c98a2178beb98e73cb690bafdfcd93a4 to your computer and use it in GitHub Desktop.
Save crazy-diya/c98a2178beb98e73cb690bafdfcd93a4 to your computer and use it in GitHub Desktop.
Upload image into Firebase Storage and Firebase database in Android Studio Java
package com.example.learningfirebase;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StorageTask;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;
import java.util.HashMap;
public class ImageStore extends AppCompatActivity {
Button load,save,show;
ImageView imageView;
ProgressBar progressBar;
public Uri imguri;
StorageReference storageReference;
DatabaseReference databaseReference;
private StorageTask storageTask;;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.store_image);
storageReference = FirebaseStorage.getInstance().getReference("Images");
databaseReference = FirebaseDatabase.getInstance().getReference("Images");
imageView = (ImageView) findViewById(R.id.imageView2);
load = (Button) findViewById(R.id.img_btn_load);
save = (Button) findViewById(R.id.img_btn_save);
show = (Button) findViewById(R.id.show_button);
progressBar = (ProgressBar) findViewById(R.id.progressBar4);
progressBar.setVisibility(View.INVISIBLE);
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FileChooser();
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
if (storageTask != null && storageTask.isInProgress()){
Toast.makeText(ImageStore.this, "Upload is Progress", Toast.LENGTH_SHORT).show();
}else{
FileUploader();
}
}
});
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ImageStore.this,ImageRetrieve.class));
}
});
}
/**Start the image save to Firebase Storage in the database*/
private String getExtension(Uri uri){
ContentResolver contentResolver = getContentResolver(); //using for get the extention in image.
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
}
private void FileUploader() {
storageTask = storageReference.child(System.currentTimeMillis()+"."+getExtension(imguri)).putFile(imguri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressBar.setVisibility(View.INVISIBLE);
/*Database ekata Image eke url eka save karawanawa*/
HashMap<String,String> hashMap = new HashMap<>();
//Get image Download URL//
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
Uri downloadUrl = uriTask.getResult();
hashMap.put("imgUrl",downloadUrl.toString());
String imgKey = databaseReference.push().getKey();
databaseReference.child(imgKey).setValue(hashMap);
Toast.makeText(ImageStore.this, "Image Uploaded Successfully!", Toast.LENGTH_SHORT).show();
}
});
}
/**End the image save to Firebase Storage in the database*/
/**Start Access the mobile file location for get the image and set the image into image view*/
private void FileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null)
{
imguri = data.getData();
Picasso.get().load(imguri).into(imageView);
//imageView.setImageURI(imguri);
}
}
/**End Access the mobile file location for get the image and set the image into image view*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment