使用以下代码检查设备的空闲大小:
对于 iOS:
NSFileManager.DefaultManager.GetFileSystemAttributes (Environment.GetFolderPath (Environment.SpecialFolder.Personal)).FreeSize;
对于安卓:
var freeExternalStorage = Android.OS.Environment.ExternalStorageDirectory.UsableSpace;
没有通用选项,但您可以将其包装成这样的接口并在每个项目中实现:
public interface IStorage
{
double GetRemainingStorage();
}
如果可以在 Xamarin.Essentials 中添加这样的功能,那就太好了 - GitHub 上有一个请求,但它从未真正实现。
如果代码有任何问题 - 请告诉我。
希望这有帮助,
说明
在您的共享项目中创建一个名为IStorage 的界面。
在您的 Android 项目中创建一个名为 AndroidStorageManager 的类(您可以随意命名它)。让它扩展IStorage。方法GetRemainingStorage() 的返回类型应该是double。
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();
希望这能澄清事情。