有谁知道如何访问通用Windows Phone 8.1应用程序中的可用空间?在Windows Phone 8(.1)Silverlight应用程序中,我可以使用此代码:
int availableStorage = IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace;
但是Windows(电话)8.1应用程序中没有System.IO.IsolatedStorage。
答案 0 :(得分:10)
可以完成like in answers to this question。正如我所尝试的那样,下面代码中的方法返回空闲字节数:
public async Task<UInt64> GetFreeSpace()
{
StorageFolder local = ApplicationData.Current.LocalFolder;
var retrivedProperties = await local.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
return (UInt64)retrivedProperties["System.FreeSpace"];
}
// usage:
UInt64 myFreeSpace = await GetFreeSpace();
有关要追溯的属性(格式等)的更多信息,您可以find at MSDN。
更多信息 - 请注意,该方法获得了它所受影响的文件夹的可用空间。所以,如果我们这样运行:
public async Task<UInt64> GetFreeSpace(StorageFolder folder)
{
var retrivedProperties = await folder.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
return (UInt64)retrivedProperties["System.FreeSpace"];
}
// and use it like this:
UInt64 spaceOfInstallationFolder = await GetFreeSpace(ApplicationData.Current.LocalFolder);
UInt64 spaceOfMusicLibrary = await GetFreeSpace(KnownFolders.MusicLibrary);
我们将根据用户电话的设置获得结果:
ApplicationData.Current.LocalFolder
指的是安装了应用程序的地方 - 因此,如果用户设置了应用程序将安装在SD上,那么您将在SD卡上看到空闲位置,KnownFolders.MusicLibrary
(例如,它可以是PicturesLibrary等,也确保您在清单文件中添加了可用性,否则您将获得异常) - 相同的情况取决于用户设置 - 它可以是电话或SD上的空间因此,如果应用程序已安装在手机上,则会在LocalFolder
上进行操作,您将在手机上获得空间。如果你想要SD空间,那么你可以运行这样的方法(记住功能):
UInt64 spaceOfMusicLibrary = await GetFreeSpace((await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault());
另请注意,如果用户已设置要在SD(应用程序,音乐,图片)上安装的所有内容,则获取手机的可用空间是无用的,因为您将无法使用它(未经授权的访问)。简单地说 - 如果您可以访问文件夹,则可以获得其可用空间。