[英]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.