【问题标题】:firebase image retrieval in AndroidAndroid中的firebase图像检索
【发布时间】:2018-05-10 09:57:40
【问题描述】:

我面临的问题是,在使用 Gallery Intent 从 Gallery 中选择图像时,尽管图像存储在 Firebase Storage 中但未显示在 ImageView 中。相反,占位符消失了,什么也看不见了。 P.S 我是 Android 和 Firebase 的新手。

附上相同的截图。

before uploading

After uploading

以下是我的代码:

public class EditProfile extends AppCompatActivity {

Button selectImage, save_data_editProfile;
EditText editText, editText2;
ImageView imageView;
private StorageReference mStorage;
private Toolbar mToolBar;
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mFirebaseAuth;
private ProgressDialog mProgress;
private ImageButton mphotoPickerButton;
private String currentUserEmail;
private static final int GALLERY_INTENT = 2;
private DatabaseReference mCurrentUserDatabaseReference;
private Context mView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit_profile);

    //selectImage = (Button) findViewById(R.id.selectImage);
    save_data_editProfile = (Button) findViewById(R.id.save_data_editProfile);
    //imageView = (ImageView) findViewById(R.id.imageView);
    editText = (EditText) findViewById(R.id.editText);
    editText2 = (EditText) findViewById(R.id.editText2);


    mView = EditProfile.this;
    initializeScreen();
    openImageSelector();
    initializeUserInfo();


}

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){

    mStorage = FirebaseStorage.getInstance().getReference(); //make global
    super.onActivityResult(requestCode, requestCode, data);

    if(requestCode ==GALLERY_INTENT && resultCode == RESULT_OK){

        mProgress.setMessage("Uploading...");
        mProgress.show();

        Uri uri = data.getData();
        //Keep all images for a specific chat grouped together
        final String imageLocation = "Photos/profile_picture/" + currentUserEmail;
        final String imageLocationId = imageLocation + "/" + uri.getLastPathSegment();
        final String uniqueId = UUID.randomUUID().toString();
        final StorageReference filepath = mStorage.child(imageLocation).child(uniqueId + "/profile_pic");
        final String downloadURl = filepath.getPath();
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                //create a new message containing this image
                addImageToProfile(downloadURl);
                mProgress.dismiss();
            }
        });
    }

}

public void addImageToProfile(final String imageLocation){
    final ImageView imageView = (ImageView) findViewById(R.id.imageView);
    mCurrentUserDatabaseReference
            .child("profilePicLocation").setValue(imageLocation).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    StorageReference storageRef = FirebaseStorage.getInstance()
                            .getReference().child(imageLocation);

                    //Picasso.get().load(imageLocation).into(imageView);



                    Glide.with(mView)
                            .using(new FirebaseImageLoader())
                            .load(storageRef)
                            .bitmapTransform(new CropSquareTransformation(mView))
                            .into(imageView);
                }
            }
    );

}

public void openImageSelector(){

    mphotoPickerButton = (ImageButton) findViewById(R.id.imageButton);
    mProgress = new ProgressDialog(this);
    mphotoPickerButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, GALLERY_INTENT);
            //mView = view;
        }
    });
}

private void initializeUserInfo(){
    final ImageView imageView = (ImageView) findViewById(R.id.imageView);
    mCurrentUserDatabaseReference
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    User user = dataSnapshot.getValue(User.class);
                    try{
                        if(user.getProfilePicLocation() != null){
                            StorageReference storageRef = FirebaseStorage.getInstance()
                                    .getReference().child(user.getProfilePicLocation());



                            Glide.with(mView)
                                    .using(new FirebaseImageLoader())
                                    .load(storageRef)
                                    .bitmapTransform(new CropSquareTransformation(mView))
                                    .into(imageView);
                        }
                    }catch (Exception e){
                        Log.e("Error", e.getMessage());
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
}

private void initializeScreen(){
    mFirebaseAuth = FirebaseAuth.getInstance();
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    currentUserEmail = EmailEncoding.commaEncodePeriod(mFirebaseAuth.getCurrentUser().getEmail());
    mCurrentUserDatabaseReference = mFirebaseDatabase
            .getReference().child(Constants.USERS_LOCATION
                    + "/" + currentUserEmail);
    }
}

【问题讨论】:

    标签: android firebase firebase-storage


    【解决方案1】:

    尝试在 OnSuccessListener 上调用 addImageToProfile(taskSnapshot.downloadURl.toString());

    Glide.with(mView)
           .using(new FirebaseImageLoader())
           .load(imageLocation)
           .bitmapTransform(new CropSquareTransformation(mView))
           .into(imageView);
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2021-06-30
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2016-02-12
      相关资源
      最近更新 更多