Xamarin.android 从Firebase存储中检索图像

Xamarin.android 从Firebase存储中检索图像,xamarin.android,firebase-storage,Xamarin.android,Firebase Storage,我正在尝试从Firebase存储中提取一个图像,这样我就可以使用该图像的URL将其放入Imageview中。我找到的大多数答案都与android studio有关,而xamarin没有答案。这是我目前掌握的代码: storage = FirebaseStorage.Instance; storageRef = storage.GetReferenceFromUrl("gs://......com"); StorageReference ImageFolder = storageRef.Chil

我正在尝试从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


如果有人能给我提供任何链接或文档或任何帮助,我将不胜感激。

您可以实现
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;
    }
 }
StorageReference-ImageFolder=storageRef.Child(“图像”);
StorageReference UserFolder=ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage=UserFolder.Child(“配置文件pic”);
StorageReference testRef=UserImage.Child(“test.jpg”);
任务下载任务=testRef.GetBytes(1200*800);
downloadtask.AddOnSuccessListener(此);
downloadtask.AddOnFailureListener(此);
public void OnFailure(Java.Lang.e异常)
{
Log.WriteLine(LogPriority.Debug,“存储”,“失败:+e.ToString());
}
成功时的公共void(Java.Lang.Object结果)
{
Log.WriteLine(LogPriority.Debug,“存储”,“成功!”);
if(downloadtask!=null)
{
var data=downloadtask.Result.ToArray();
位图位图=位图工厂.DecodeByteArray(数据,0,数据.Length);
设置图像位图(位图);
downloadtask=null;
}
}
有几种方法可以做到这一点

您可以参考您可以实现
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;
    }
 }
StorageReference-ImageFolder=storageRef.Child(“图像”);
StorageReference UserFolder=ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage=UserFolder.Child(“配置文件pic”);
StorageReference testRef=UserImage.Child(“test.jpg”);
任务下载任务=testRef.GetBytes(1200*800);
downloadtask.AddOnSuccessListener(此);
downloadtask.AddOnFailureListener(此);
public void OnFailure(Java.Lang.e异常)
{
Log.WriteLine(LogPriority.Debug,“存储”,“失败:+e.ToString());
}
成功时的公共void(Java.Lang.Object结果)
{
Log.WriteLine(LogPriority.Debug,“存储”,“成功!”);
if(downloadtask!=null)
{
var data=downloadtask.Result.ToArray();
位图位图=位图工厂.DecodeByteArray(数据,0,数据.Length);
设置图像位图(位图);
downloadtask=null;
}
}
有几种方法可以做到这一点

你可以参考

它现在可以工作了吗?嘿,利奥,是的,我可以工作了,我会在有时间的时候发布我找到的解决方案,谢谢。它现在可以工作了吗?嘿,利奥,是的,我可以工作了,我会在有时间的时候发布我找到的解决方案,谢谢。