Задать вопрос
semennovikov123
@semennovikov123
Backend Developer

Как скачивать картинку из firebase storage?

Не получается скачать картинку в память и загрузить в ImageView. Помогите пожалуйста,а то совсем запутался. Каждый раз приложение вылетает , Вот Код:
Image_kyrs = (ImageView) findViewById(R.id.imageView);

         FirebaseStorage storage = FirebaseStorage.getInstance();

        StorageReference storageRef = storage.getReferenceFromUrl("gs://*******.appspot.com");

        StorageReference pathReference = storageRef.child("scoin.png");

        final long ONE_MEGABYTE = 1024 * 1024;
        gsReference.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
            @Override
            public void onSuccess(byte[] bytes) {
                  Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                  Image_kyrs.setImageBitmap(bmp);

                Toast toast = Toast.makeText(getApplicationContext(),
                        "Картинка скачалась!", Toast.LENGTH_SHORT);
                toast.show();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Toast toast = Toast.makeText(getApplicationContext(),
                        "Ошибка!", Toast.LENGTH_SHORT);
                toast.show();
            }
        });
    }

Вот такие ошбики:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' on a null object reference

StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Please sign in before trying to get a token.

StorageException has occurred.
User does not have permission to access this object.

Разрешения вроде прописал:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

В firebase читать без авторизация тоже разрешено:
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
    allow read, write;
    }
  }
}
  • Вопрос задан
  • 1110 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Ivan0206
Я поступил проще. Есть библиотека "Picasso", в коде получаешь url на картинку из Firebase и передаёшь еще в метод библиотеки и она сетит эту картинку в нужную тебе view.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы