我正在尝试更新我的用户配置文件(特别是照片),方法是选择选择器从我的库中选择图像并将其上传到我的firebase认证存储 . 它工作得很好:照片上传到我描述的路径 .

问题是我不能像我想的那样回复它 . 我想更新用户 Profiles 图片并使用 UpdateProfileRequest ,但它只是没有更新任何内容,也无法检索任何内容 .

这是代码:

final ImageView photo = (ImageView) findViewById(R.id.photoURI);

        if (photoUri == null) {
            photo.setImageResource(R.drawable.user);
            Toast.makeText(LoginActivity.this,"DP is Empty",Toast.LENGTH_SHORT).show();
        } else {
            photo.setImageURI(photoUri);
        }

        Button editPhoto = (Button) findViewById(R.id.edit_photo);
        editPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("image/jpeg");
                intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
                startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
            }
        });

这是我的活动结果代码

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
        final Uri selectedImageUri = data.getData();

        // Get a reference to store file at User_photos/<FILENAME>
        StorageReference photoRef = storageReference.child(userID).child(selectedImageUri.getLastPathSegment());

        // Upload file to firebase Storage
        photoRef.putFile(selectedImageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Uri downloadUrl = taskSnapshot.getDownloadUrl();
                String imageUrl = downloadUrl.toString();
                User user = new User(imageUrl);
                databaseReferencenew.child(userID).child("Profile_Pic_URL").setValue(user);
                FirebaseUser user2 = FirebaseAuth.getInstance().getCurrentUser();
                UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                        .setDisplayName(mName)
                        .setPhotoUri(selectedImageUri)
                        .build();

                user2.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        Log.d(TAG, "User profile updated.");
                        Toast.makeText(LoginActivity.this,"User profile updated.",Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
}