gpt4 book ai didi

c# - 我可以在 Xamarin Forms 上检查设备中的可用存储空间吗?

转载 作者:行者123 更新时间:2023-12-04 23:55:01 24 4
gpt4 key购买 nike

我正在尝试制作一个需要我经常将记录的数据发送到 firebase 的应用程序。当网络中断或电池即将耗尽时,我将保存所有未存储在本地 firebase 中的数据。但是,为此我需要大约 20 MB 的数据(我的数据非常大)。话虽如此,我想找到一种方法来检查可用存储空间(如果可能的话还有电池)以向用户发出警告。这可能使用 Xamarin Forms 吗?另外,有没有一种方法可以使这个解决方案通用(即我不需要针对 iOS 和 Android 的单独代码)? (我是 Xamarin 和 C# 的新手)

最佳答案

使用以下代码检查设备的可用大小:

对于 iOS:

NSFileManager.DefaultManager.GetFileSystemAttributes (Environment.GetFolderPath (Environment.SpecialFolder.Personal)).FreeSize;

对于安卓:

var freeExternalStorage = Android.OS.Environment.ExternalStorageDirectory.UsableSpace;

没有通用的选项,但你可以像这样包装一个接口(interface)并在每个项目上实现它:

public interface IStorage
{
double GetRemainingStorage();
}

如果像这样的功能可以添加到 Xamarin.Essentials 中,那就太好了 - GitHub 上有一个请求,但从未真正实现。

如果代码有任何问题 - 请告诉我。

希望对您有所帮助,

说明在名为 IStorage共享项目 中创建一个界面。

在您的 Android 项目中创建一个名为 AndroidStorageManager 的类(您可以随意命名)。让它扩展 IStorageGetRemainingStorage() 方法的返回类型应为 double

enter image description here

 public class AndroidStorageManager : IStorage
{
public double GetRemainingStorage()
{
var freeExternalStorage = Android.OS.Environment.ExternalStorageDirectory.UsableSpace;

return freeExternalStorage;
}
}

适用于 iOS在您的 iOS 项目中创建一个名为 iOSStorageManager 的类,它扩展了 IStorage:

 public class iOSStorageManager : IStorage
{
public double GetRemainingStorage()
{
return NSFileManager.DefaultManager.GetFileSystemAttributes(Environment.GetFolderPath(Environment.SpecialFolder.Personal)).FreeSize;
}
}

在您的 Android 实现中 - 在命名空间上方添加以下代码:

[assembly: Xamarin.Forms.Dependency(
typeof(AndroidStorageManager))]

对于 iOS:

[assembly: Xamarin.Forms.Dependency(
typeof(iOSStorageManager))]

获取存储空间:

 IStorage storageManager = DependencyService.Get<IStorage>();
double remaining = storageManager.GetRemainingStorage();

希望这能澄清事情。

关于c# - 我可以在 Xamarin Forms 上检查设备中的可用存储空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65440467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com