Android Firebase - выгрузить изображение из нарисованного в хранилище - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь получить изображение из папки для рисования и сохранить его в Firebase Storage.Для сохранения изображения я использую UploadTask и для этого требуется файл Uri.Изображение из drawable является int.Есть ли способ преобразовать этот int в Uri?

Проверьте мой код, пожалуйста

 private void saveProfileImgToStorage(final User user) {
    storageRef = FirebaseStorage.getInstance().getReference();

    StorageReference userImgProfile = storageRef.child("/usersProfiles/" + currentUser.getUid() +"/profile_image");
    UploadTask uploadTask;

          //What should i do here??
          //This is the path of the image "R.drawable.ic_account"
    uploadTask = userImgProfile.putFile();

    uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            Uri firebaseURL = taskSnapshot.getDownloadUrl();
            user.setProfilePic(firebaseURL.toString());
            uploadToFirebaseDatabase(user);
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d(TAG,e.getMessage().toString());
        }
    });
}

Редактировать

Найденорешение

   //This how i should write it - and now it works!
  Uri imageUri = Uri.parse("android.resource://"+ R.class.getPackage().getName()+"/"+R.drawable.profile_image);
   UploadTask uploadTask;

    uploadTask = userImgProfile.putFile(imageUri);

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы получить URI из изображения, сохраненного в drawable, просто сделайте это

Uri imageUri = Uri.parse("android.resource://your.package.name/" + R.drawable.ic_account);

немного чище

 Uri imageUri = Uri.parse("android.resource://" + context.getPackageName() + 
 R.drawable.ic_account);

Где context может быть this, если вы ссылаетесьв действие или getActivity() из фрагмента.

Чтобы загрузить его в Firebase, вам нужно будет сделать это

File file = new File(imageUri.getPath());

, а затем

uploadTask = userImgProfile.putFile(file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...