Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.firebasestorageexample
- import android.app.Activity
- import android.content.Intent
- import android.net.Uri
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.provider.MediaStore
- import com.google.android.gms.tasks.Continuation
- import com.google.android.gms.tasks.Task
- import com.google.firebase.storage.FirebaseStorage
- import com.google.firebase.storage.StorageReference
- import com.google.firebase.storage.UploadTask
- import kotlinx.android.synthetic.main.activity_main.*
- import java.io.IOException
- import java.util.*
- class MainActivity : AppCompatActivity() {
- private val PICK_IMAGE_REQUEST = 71
- private var filePath: Uri? = null
- private var FirebaseStorage: FirebaseStorage? = null
- private var storageReference: StorageReference? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- btn_chose_img.setOnClickListener{ launchGallery() }
- btn_upload_img.setOnClickListener{ uploadImage() }
- }
- private fun launchGallery(){
- val i = Intent()
- i.type = "image/*"
- i.action = Intent.ACTION_GET_CONTENT
- startActivityForResult(Intent.createChooser(i, "Select Picture"), PICK_IMAGE_REQUEST)
- }
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK){
- if (data == null || data.data == null){
- return
- }
- filePath = data.data
- try {
- val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, filePath)
- img_preview.setImageBitmap(bitmap)
- }catch (e : IOException){
- e.printStackTrace()
- }
- }
- }
- private fun uploadImage(){
- if (filePath != null){
- val ref = storageReference?.child("Uploads/" + UUID.randomUUID().toString())
- val uploadTask = ref?.putFile(filePath!!)
- val urlTask = uploadTask?.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>>{
- if (!it.isSuccessful) {
- it.exception?.let { throw it}
- }
- return@Continuation ref.downloadUrl
- })?.addOnCompleteListener{
- if (it.isSuccessful) {
- val downloadUri = it.result
- addUploadRecordToDb (downloadUri.toString())
- }else {
- }
- }?.addOnFailureListener{
- }
- }
- }
- private fun addUploadRecordToDb(uri: String) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement