main java
package com.google.top.my; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.provider.MediaStore; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; import com.google.firebase.storage.UploadTask; import java.util.UUID; public class MainActivity extends AppCompatActivity { Button chooseImg, uploadImg; ImageView imgView; int PICK_IMAGE_REQUEST = 111; Uri filePath; ProgressDialog pd; //creating reference to firebase storage FirebaseStorage storage = FirebaseStorage.getInstance(); StorageReference storageRef = storage.getReferenceFromUrl("gs://wallpaper-app-1b2cd.appspot.com"); //change the url according to your firebase app @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chooseImg = (Button)findViewById(R.id.chooseImg); uploadImg = (Button)findViewById(R.id.uploadImg); imgView = (ImageView)findViewById(R.id.imgView); pd = new ProgressDialog(this); pd.setMessage("Uploading...."); chooseImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_PICK); startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE_REQUEST); } }); uploadImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(filePath != null) { pd.show(); String imageID = UUID.randomUUID().toString(); StorageReference childRef = storageRef.child(imageID); //uploading the image UploadTask uploadTask = childRef.putFile(filePath); uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { pd.dismiss(); Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_SHORT).show(); } }); uploadTask.addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { pd.dismiss(); Toast.makeText(MainActivity.this, "Upload Failed -> " + e, Toast.LENGTH_SHORT).show(); } }); } else { Toast.makeText(MainActivity.this, "Select an image", Toast.LENGTH_SHORT).show(); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { filePath = data.getData(); try { //getting image from gallery Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); //Setting image to ImageView imgView.setImageBitmap(bitmap); } catch (Exception e) { e.printStackTrace(); } } } }
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Choose Image" android:id="@+id/chooseImg"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Upload Image" android:id="@+id/uploadImg"/> <ImageView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/imgView"/> </LinearLayout>apppimplementation 'com.google.firebase:firebase-storage:16.0.4'implementation 'com.google.firebase:firebase-auth:16.0.5'apply plugin: 'com.google.gms.google-services'
classpath 'com.google.gms:google-services:4.2.0'