【发布时间】:2021-07-19 03:46:42
【问题描述】:
我正在尝试使用 Java 将图像从 Firebase 存储下载到 android studio 应用程序上的 imageView。我已经浏览了超过 6 个小时的 stackoverflow,所以我很可能已经阅读了任何“类似”的问题。我尝试了各种方法,但建议最多且似乎最简单的方法是使用 glide。我无法让它工作,也找不到错误。我什至放了一个常规的谷歌图片链接来尝试,它仍然显示为空白。
我添加的依赖项
implementation'com.firebaseui:firebase-ui-storage:6.4.0'
implementation'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor'com.github.bumptech.glide:compiler:4.12.0'
我用过的代码
ImageView imageView = findViewById(R.id.resultImage);
Glide.with(this).load("string of image").into(imageView);
我也试过这个代码
StorageReference ref = storage.getReferenceFromUrl("urlforimage");
// ImageView in your Activity
ImageView imageView = findViewById(R.id.uploadedImage);
// Download directly from StorageReference using Glide
Glide.with(this /* context */)
.load(ref)
.into(imageView);
还有这段代码
public class Breed_Search_Page1Activity extends AppCompatActivity {
ImageView rImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_breed__search__page1);
rImage = findViewById(R.id.rImage);
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference();
DatabaseReference getImage = databaseReference.child("image");
getImage.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String link = dataSnapshot.getValue(String.class);
Picasso.get().load(link).into(rImage);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
// we are showing that error message in toast
Toast.makeText(Breed_Search_Page1Activity.this, "Error Loading Image", Toast.LENGTH_SHORT).show();
}
});
}
}
更新 - 我让它使用下面的代码,但想知道有没有办法仅使用文件名从 Firebase 存储中显示它?当我从我的笔记本电脑上传一张图像时,我想尽快在应用程序中显示它,所以如果我可以对其进行编码,以便它具有我将在上传时使用的文件名,它会在上传后显示,而无需手动更改任何内容
ImageView image = (ImageView) findViewById(R.id.rImage);
String url = "https//...";
Glide.with(getApplicationContext()).load(url).into(image);
添加监听器后我的 logcat
2021-04-27 10:35:01.780 14347-14576/com.example.woofsapp E/StorageException:
StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
2021-04-27 10:35:01.781 14347-14576/com.example.woofsapp E/StorageException:
{ "error": { "code": 404, "message": "Not Found. Could not get
object", "status": "GET_OBJECT" }}
java.io.IOException: { "error": { "code": 404, "message": "Not
Found. Could not get object", "status": "GET_OBJECT" }}
at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
at com.google.firebase.storage.GetDownloadUrlTask.run(GetDownloadUrlTask.java:76)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
给出 logcat 错误的代码 - 请注意,我确实直接从文档中复制了 MyAppGlideModule
ImageView image = findViewById(R.id.rImage);
StorageReference storageReference =
FirebaseStorage.getInstance().getReference("Images/dogs.jpg");
storageReference.child("dogs.jpg").getDownloadUrl().addOnSuccessListener(new
OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL for 'users/me/profile.png'
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
【问题讨论】:
-
您的日志猫出现了什么错误?
-
这是我的 logcat 中仅有的两件事 - 2021-04-26 09:53:44.847 12063-12063/? E/Zygote: isWhitelistProcess - 进程被列入白名单 2021-04-26 09:53:44.848 12063-12063/? E/Zygote: accessInfo : 1 这些是在 logcat 的最开始,经过研究,我知道它们并不是真正的错误。当我按下应该将我带到带有图像的新页面的按钮时,logcat 中没有显示错误
标签: java android firebase-storage android-glide