Есть ли способ сохранить мои профили пользователей Firebase и отобразить их позже? - PullRequest
0 голосов
/ 31 января 2019

В моем приложении есть группы с разными пользователями (участниками).Я хочу сохранить изображения профиля пользователя, чтобы я мог показывать другим пользователям участников в каждой группе.

Я искал ответ в течение нескольких недель.Не смог найти похожий вопрос.У меня есть некоторый опыт в Firebase и Android.

Вот код:

private void saveUserProfilePic(){
    Uri photoUrl = thisUser.getPhotoUrl();


    if(photoUrl != null) {

        StorageReference fileReference = mStorageRef.child(thisUser.getUid());
        fileReference.putFile(photoUrl)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(MainActivity.this, "image Saved", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });
    } else {
        Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
    }

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Да, мы можем, я нашел способ.

  1. создать поля:
private CircleImageView civ;  //its like image view

private StorageReference storageReference;
in onCreate():
storageReference = FirebaseStorage.getInstance().getReference("your_firbase_ reference");
используйте следующие строки:
StorageReference storageRef = storageReference;
Glide.with(<your activity>.this)
   .load(storageRef)
   .into(civ);

Я использую библиотеку glide, и этот способ предназначен для проектов Firebase.

0 голосов
/ 31 января 2019

Если я правильно понимаю, вы хотите загрузить файл, для которого у вас есть URL.Вы должны использовать UploadTask для этого.Лучшим способом было бы создать InputStream из URL, а затем создать uploadTask.Примерно так:

HttpURLConnection connection = (HttpURLConnection)photoUrl.openConnection();
InputStream stream = connection.getInputStream();

или вы можете создать поток BufferedInputStream InputStream = new BufferedInputStream (connection.getInputStream ());

Теперь вы можете создать uploadTask.

UploadTask uploadTask = fileReference.putStream(stream);

Теперь вы можете использовать свой старый код.

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Toast.makeText(MainActivity.this, "image Saved", Toast.LENGTH_SHORT).show();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...