[英]Update user profile on Firebase Android
我在更新用户个人资料时遇到问题。 就我而言,我将更新用户的两个字段(位置和可用性)。 它们的数据类型在 boolean 中。 请帮助如何更新用户配置文件。 我的方法如下:
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();
}
});
}
我的用户 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;
}
}
将以下方法添加到您的用户 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;
}
}
并像这样更新您想要的任何道具:
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
}
});
其中reference
是FirebaseDatabase.getInstance().getReference("Users");
user
是FirebaseAuth.getInstance().getCurrentUser();
正如有关更新用户配置文件的 Firebase 文档所示,您需要构建一个UserProfileChangeRequest
。 从文档:
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.