Can't download public image from Google Cloud Storage using Fresco

I am trying to install an ImageView with a public permissions image. The image loads correctly from the browser, but inside my application it doesn't work:

Uri uri=Uri.parse("https://storage.googleapis.com/mybucket/filename.jpg");

                    ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() {
                        @Override
                        public void onFinalImageSet(
                                String id,
                                @Nullable ImageInfo imageInfo,
                                @Nullable Animatable anim) {
                            if (imageInfo == null) {
                                return;
                            }
                            QualityInfo qualityInfo = imageInfo.getQualityInfo();
                            FLog.d("Final image received! " +
                                            "Size %d x %d",
                                    "Quality level %d, good enough: %s, full quality: %s",
                                    imageInfo.getWidth(),
                                    imageInfo.getHeight(),
                                    qualityInfo.getQuality(),
                                    qualityInfo.isOfGoodEnoughQuality(),
                                    qualityInfo.isOfFullQuality());
                        }

                        @Override
                        public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) {
                            FLog.d(TAG,"Intermediate image received");
                        }

                        @Override
                        public void onFailure(String id, Throwable throwable) {
                            FLog.e(getClass(), throwable, "Error loading %s", id);
                        }
                    };

                    PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder()
                            .setControllerListener(controllerListener)
                            .setUri(uri);
                    // other setters

                    imageView.setController(controller.build());

      

The exception is not very clear, I just get:

java.lang.RuntimeException: Unsupported uri scheme! Uri is:  https://storage.googleapis.co...
        at com.facebook.imagepipeline.core.ProducerSequenceFactory.getBasicDecodedImageSequence(ProducerSequenceFactory.java:176)
        at com.facebook.imagepipeline.core.ProducerSequenceFactory.getDecodedImageProducerSequence(ProducerSequenceFactory.java:129)
        at com.facebook.imagepipeline.core.ImagePipeline.fetchDecodedImage(ImagePipeline.java:147)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder.getDataSourceForRequest(PipelineDraweeControllerBuilder.java:82)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder.getDataSourceForRequest(PipelineDraweeControllerBuilder.java:31)
        at com.facebook.drawee.controller.AbstractDraweeControllerBuilder$2.get(AbstractDraweeControllerBuilder.java:320)
        at com.facebook.drawee.controller.AbstractDraweeControllerBuilder$2.get(AbstractDraweeControllerBuilder.java:317)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeController.getDataSource(PipelineDraweeController.java:96)
        at com.facebook.drawee.controller.AbstractDraweeController.submitRequest(AbstractDraweeController.java:392)
        at com.facebook.drawee.controller.AbstractDraweeController.onAttach(AbstractDraweeController.java:332)
        at com.facebook.drawee.view.DraweeHolder.attachController(DraweeHolder.java:276)
        at com.facebook.drawee.view.DraweeHolder.setController(DraweeHolder.java:222)
        at com.facebook.drawee.view.DraweeView.setController(DraweeView.java:87)

      

Do I need to add something else to the URL? I was under the impression that access to open files is possible as is.

+3


source to share


1 answer


I solved the problem by changing the url to "storage-download.googleapis.com ...."; instead of "storage.googleapis.com"; It really took me a while to find out about this as it is not documented by google



+1


source







All Articles