0

I'm creating an app using Kotlin on Android Studio. In the app, users will be allowed to add an image, username, and a phone number to proceed to other activities. The mentioned info should be saved in the app Cloud Firestore (Firebase).

However, while coding the functions for firestore, data is not saved to the database

Can anyone help please?

When I built my app, this is what it showed:

Open the picture

This is my first post on stackoverflow, so let me know if you want to know any addtional infos.

I would appreciate any help from you, guys.

This is my code:

     setupBtn.setOnClickListener {
                val username: String = setupName.text.toString()
                val phoneNumber: String = setupPhoneNumber.text.toString()


                    if (!TextUtils.isEmpty(username) && 
     !TextUtils.isEmpty(phoneNumber)) { //if fields are not empty, proceed. Else, 
    tell user to fill both fields
                    setupProgressBar.visibility = View.VISIBLE
                    val userID = mAuth.currentUser!!.uid // saves user ID
                    val imagePATH: StorageReference = 
    storageRef.child("profile_images").child(userID + ".jpg")  //store the image 
  as the user ID
                    imagePATH.putFile(mainImageURI).addOnCompleteListener { 
  task ->
                        if (task.isSuccessful) {
                            //get the downloadURI of the image and store it
                            val downloadURI = 
  task.result.metadata!!.reference!!.downloadUrl.toString()

                            //A collection stores in the database that has a 
   1)name .. 2)phone number .. 3)image
                            val data = HashMap<String, Any>()
                            data.put("name", username)
                            data.put("phone number", phoneNumber)
                            data.put("image", downloadURI)

                            val docRef = 
mFirestore.collection("Users").document(userID).set(data)
                              docRef.addOnCompleteListener { task ->
                                if (task.isSuccessful) {
                                    Toast.makeText(this, "User Setting are 
 updated", Toast.LENGTH_LONG).show()
                                    val intent = Intent(this, 
PhotoBlog::class.java)
                                    startActivity(intent)
                                    finish()
                                } else {
                                    val errorMessage: String? = 
 task.exception!!.message
                                    Toast.makeText(this, "Database Error: 
 $errorMessage", Toast.LENGTH_LONG).show()
                                }
                            }
                        } else {
                            val errorMessage: String? = 
 task.exception!!.message
                            Toast.makeText(this, "Image Error: 
$errorMessage", Toast.LENGTH_LONG).show()
                        }
                        setupProgressBar.visibility = View.INVISIBLE
                    }
                } else {
                    Toast.makeText(this, "Please, fill both fields", 
Toast.LENGTH_LONG).show()
                    }
                }
            }

I also imported the needed libraries, and defined a firestore variable

private lateinit var  mFirestore: FirebaseFirestore

mFirestore = FirebaseFirestore.getInstance()
André Kool
  • 4,880
  • 12
  • 34
  • 44
  • Check out [this](https://stackoverflow.com/questions/46590155/firestore-permission-denied-missing-or-insufficient-permissions) and have a read [here](https://firebase.google.com/docs/firestore/security/get-started). – grrigore Aug 25 '18 at 14:46
  • This have solved my problem. Thank you very much!! – Majed Joudeh Aug 25 '18 at 16:42

0 Answers0