Last active
August 7, 2020 06:49
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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