繁体   English   中英

更新 Firebase Android 上的用户配置文件

[英]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
    }
});

其中referenceFirebaseDatabase.getInstance().getReference("Users"); userFirebaseAuth.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM