J'essaie d'ajouter une image à l'information de l'utilisateur dans la base de données en temps réel (firebase) pour android. J'ai téléchargé l'image sur le stockage Firebase mais comment puis-je ajouter l'image dans la base de données pour cet utilisateur?Télécharger l'image du profil pour un utilisateur Firebase
code ci-dessous:
//inside onCreate() method
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(Intent.ACTION_PICK);
i.setType("image/*");
startActivityForResult(i,request_code);
}
});
Ici, je suis en cliquant sur le imageview, donc je serai en mesure de changer et d'obtenir une image de la galerie.
Ici, j'authentifier l'utilisateur et envoyer des données à la base de données:
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(StudentSignUpActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(getApplicationContext(), "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
startActivity(new Intent(StudentSignUpActivity.this, HomeActivity.class));
finish();
}
}
});
mCurrentUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference newStudent=mDatabase.push();
newStudent.child("email").setValue(email);
newStudent.child("password").setValue(password);
newStudent.child("name").setValue(name);
newStudent.child("date").setValue(dates);
newStudent.child("phone").setValue(number);
newStudent.child("uid").setValue(mCurrentUser.getUid());
//outside of onCreate()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==request_code&&resultCode==RESULT_OK){
Uri uri=data.getData();
StorageReference filepath=mStorage.child("Images").child(uri.getLastPathSegment());
filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
}
});
}
}
Dans le code ci-dessus, je l'ai téléchargé l'image au stockage firebase. Maintenant, comment vais-je être en mesure d'ajouter cette image en tant qu'enfant pour un utilisateur spécifique.
Je pense que je dois faire quelque chose comme ceci:
newStudent.child("image").setValue(uri_here);
Mais je suis incapable de comprendre comment obtenir le uri de l'image et la façon d'ajouter que uri dans le setValue()
depuis son dans une autre méthode.
en fait la 'newStudent = mDatabase.child (mCurrentUser.getUid())' ne fonctionne pas son exception point zéro retournaient, car il n'y a pas d'utilisateur encore connecté. Le code ci-dessus est pour l'inscription –