我正在尝试从Firebase存储中提取图像,以便随后可以使用图像的URL放入Imageview。我找到的大多数答案与android studio有关,而xamarin没有答案。这是我到目前为止的代码:
storage = FirebaseStorage.Instance;
storageRef = storage.GetReferenceFromUrl("gs://......com");
StorageReference ImageFolder = storageRef.Child("Images");
StorageReference UserFolder = ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage = storageRef.Child("profile pic");
我可以上传到Firebase存储没有问题,这是问题的检索部分。在Firebase存储中,我有一个文件夹Images / userEmail / profilePic。
任何人可以向我指出的链接或文档,或者任何帮助将非常感谢。
答案 0 :(得分:2)
您可以实现IOnSuccessListener
接口,并通过OnSuccess
方法获得结果
像这样:
让您的活动工具实现IOnSuccessListener
界面:
public class YourActivity: Activity, IOnSuccessListener, IOnFailureListener
{
...
}
使用Android.Gms.Tasks.Task
下载文件并在OnSuccess
回调中设置为imageview:
StorageReference ImageFolder = storageRef.Child("Images");
StorageReference UserFolder = ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage = UserFolder.Child("profile pic");
StorageReference testRef = UserImage.Child("test.jpg");
Task downloadtask = testRef.GetBytes(1200 * 800);
downloadtask.AddOnSuccessListener(this);
downloadtask.AddOnFailureListener(this);
public void OnFailure(Java.Lang.Exception e)
{
Log.WriteLine(LogPriority.Debug, "storage", "Failed:" + e.ToString());
}
public void OnSuccess(Java.Lang.Object result)
{
Log.WriteLine(LogPriority.Debug, "storage", "success!");
if (downloadtask != null)
{
var data = downloadtask.Result.ToArray<byte>();
Bitmap bitmap = BitmapFactory.DecodeByteArray(data, 0, data.Length);
imageview.SetImageBitmap(bitmap);
downloadtask = null;
}
}
有几种方法可以做到这一点
您可以参考FireBase