[英]Update user profile on Firebase Android
I'm having a problem with updating the user profile.我在更新用户个人资料时遇到问题。 In my case I am going to update two fields of the user (location and availability).就我而言,我将更新用户的两个字段(位置和可用性)。 The data type of them is in boolean.它们的数据类型在 boolean 中。 Please help with how to update the user profile.请帮助如何更新用户配置文件。 My way is following:我的方法如下:
private void updateProfile() {
final Boolean isAvailable = swIsAvailable.isChecked();
final Integer spinnerIndex = spLocation.getSelectedItemPosition();
final Boolean location;
if(spinnerIndex == 0){
location = false;
}else {
location =true;
}
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
User updateUser = new User();
updateUser.isAvailable = isAvailable;
updateUser.where = location;
user.updateProfile(updateUser).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(UpdateActivity.this, "User Updated", Toast.LENGTH_SHORT).show();
}
});
}
My user class is:我的用户 class 是:
public class User {
public String fullName, phoneNumber, carName, email, uriImage;
public Boolean isAvailable, where;
public User(){
}
public String getFullName() {
return fullName;
}
public User(String fullName, String phoneNumber, String carName, String email, Boolean isAvailable, Boolean where, String uriImage){
this.fullName = fullName;
this.phoneNumber = phoneNumber;
this.carName = carName;
this.email = email;
this.isAvailable = isAvailable;
this.where = where;
this.uriImage = uriImage;
}
}
Add following method to your User class:将以下方法添加到您的用户 class:
public class User {
// ... your class props and constructors here
// add this method
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
if(fullName != null)
result.put("fullName", fullName);
if(phoneNumber != null)
result.put("phoneNumber", phoneNumber);
if(carName != null)
result.put("carName", carName);
if(email != null)
result.put("email", email);
if(isAvailable != null)
result.put("isAvailable", isAvailable);
if(where != null)
result.put("where", where);
if(uriImage != null)
result.put("uriImage", uriImage);
return result;
}
}
And update any prop you want like so:并像这样更新您想要的任何道具:
User u = new User();
u.isAvailable = false; // new values go here
u.where = true; // new values go here
Map<String, Object> newUserValues = u.toMap();
reference.child(user.getUid()).updateChildren(newUserValues).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// successfully updated
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// failed to update
// handle error here
}
});
Where reference
is FirebaseDatabase.getInstance().getReference("Users");
其中reference
是FirebaseDatabase.getInstance().getReference("Users");
and user
is FirebaseAuth.getInstance().getCurrentUser();
user
是FirebaseAuth.getInstance().getCurrentUser();
As the Firebase documentation on updating a user profile shows, you need to build a UserProfileChangeRequest
.正如有关更新用户配置文件的 Firebase 文档所示,您需要构建一个UserProfileChangeRequest
。 From the docs:从文档:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName("Jane Q. User").setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg")).build(); user.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "User profile updated."); } } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.