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

231
16 февраля 2018, 18:35

Не получается скачать картинку в память и загрузить в 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

Разрешения вроде прописал:

<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;
}}}
Answer 1

Спасибо , я уже сам разобрался,использовал библиотеку Picasso. Там всё проще) Вот код если вдруг кому пригодиться:

 FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReferenceFromUrl("gs://ВАШ БАКЕТ.appspot.com");
      // создаем ссылку на файл по адресу scoin.png
      // вызываем getDownloadUrl() и устанавливаем слушатель успеха,
      // который срабатывает в случае успеха процесса скачивания
    storageRef.child("ВАША КАРТИНКА В FIREBASE.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            Picasso.with(Chart.this).load(uri)
                    .into(ImageView);  //ВАШ IMAGEVIEW,без id работать не будет
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            Toast toast = Toast.makeText(getApplicationContext(),
                    "Ошибка!", Toast.LENGTH_SHORT);
            toast.show();
        }
    });
}

Подключение библиотеки:

compile 'com.squareup.picasso:picasso:2.5.2'

И разрешение на интернет:

<uses-permission android:name="android.permission.INTERNET"/>
READ ALSO
Склеивание пакетов на java&gt;python сокетах

Склеивание пакетов на java>python сокетах

Привет пиплы! Python сервер:

141
jQuery обработчик нажатия checkbox, которого еще нет

jQuery обработчик нажатия checkbox, которого еще нет

Есть обработчки нажатия на input checkbox

205
Помощь с калькулятором jquery

Помощь с калькулятором jquery

Вроде получается определить значения полей, но как их суммировать и чтобы выводилось в результат - совсем не получаетсяЗаранее спасибо за помощь

260