How to display or get an image from Firebase storage

匿名 (未验证) 提交于 2019-12-03 01:36:02

问题:

I'm new to Android and I have a problem upon displaying an image from FirebaseStorage.

This is my code in MainActivity.java:

ImageView image = (ImageView) findViewById(R.id.profilePic_image_view);  mStorage = FirebaseStorage.getInstance().getReference(); Uri downloadURI = mStorage.child("circleako.png").getDownloadUrl().getResult();  Picasso.with(MainActivity.this).load(downloadURI).fit().centerCrop().into(image);

Inside my gradle are these:

compile 'com.google.firebase:firebase-database:10.0.1' compile 'com.google.firebase:firebase-storage:9.6.1' compile 'com.google.android.gms:play-services-base:10.0.1' compile 'com.google.android.gms:play-services-maps:10.0.1' compile 'com.google.android.gms:play-services-location:10.0.1' compile 'com.google.android.gms:play-services-analytics:10.0.1' compile 'com.squareup.picasso:picasso:2.5.2' testCompile 'junit:junit:4.12'

This is the error:

01-19 16:35:09.998 7334-7334/com.example.asuspc.timeclock E/AndroidRuntime: FATAL EXCEPTION: main  Process: com.example.asuspc.timeclock, PID: 7334   java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object;   in class Lcom/google/android/gms/common/internal/zzac; or its super classes   (declaration of 'com.google.android.gms.common.internal.zzac' appears in   /data/data/com.example.asuspc.timeclock/files/instant-run/dex/slice-com.google.android.   gms-play-services-basement-10.0.1_a22c13f35fb245022b215534e2f1b995cc0c66d1-classes.dex) at com.google.android.gms.internal.zzann.zzug(Unknown Source) at com.google.android.gms.internal.zzann.zzuf(Unknown Source) at com.google.firebase.storage.StorageReference.child(Unknown Source) at com.example.asuspc.timeclock.MainActivity.onCreate(MainActivity.java:198) at android.app.Activity.performCreate(Activity.java:6323) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) at android.app.ActivityThread.access$900(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5451) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

回答1:

You can to use Glide. With Glide you can show animated gifs too.

String urlImage = "You URL Image";  Glide.with(yourActivity.this)         .load(urlImage)         .into(yourImageView);

in gradle-app put:

compile 'com.github.bumptech.glide:glide:3.7.0'


回答2:

Clean your project and do a full reinstall of the app on the device, it seems to be an issue with instant-run.

Also, I'd recommend using Glide instead of Picasso with Firebase Storage (or cases where you load images from a URL). Picasso doesn't handle EXIF well, so in certain conditions it can cause issues such as orientation problems for images.

EDIT:

mStorage.child("circleako.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {     @Override     public void onSuccess(Uri uri) {         Picasso.with(MainActivity.this).load(uri).fit().centerCrop().into(image);     }     }).addOnFailureListener(new OnFailureListener() {         @Override         public void onFailure(@NonNull Exception exception) {             // Handle any errors         } });


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!