c# windows-phone windows-phone-8.1

c# - Cómo puedo averiguar el espacio libre disponible en una aplicación universal de Windows Phone 8.1



windows-phone windows-phone-8.1 (1)

Se puede hacer como en las respuestas a esta pregunta . Como lo he intentado, el método como en el siguiente código devuelve la cantidad de bytes libres:

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();

Obtenga más información sobre las propiedades para recuperar (su formato, etc.) que puede encontrar en MSDN .

Algo más de información: tenga en cuenta que el método obtiene espacio libre en una carpeta a la que se refiere. Entonces si lo ejecutamos así:

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);

Obtendremos los resultados dependiendo de la configuración del teléfono del usuario:

  • ApplicationData.Current.LocalFolder refiere a un lugar donde se instaló la aplicación, por lo que si el usuario estableció que las aplicaciones se instalarán en SD, verá un lugar libre en la tarjeta SD,
  • KnownFolders.MusicLibrary (por ejemplo, puede ser PicturesLibrary y demás, también se aseguran de agregar capacidades en su archivo de manifiesto; de lo contrario, obtendrá una excepción): la misma situación depende de la configuración del usuario; puede haber espacio en el teléfono o SD.

Por lo tanto, si la aplicación está instalada en el teléfono, luego se le LocalFolder a LocalFolder y tendrá espacio en el teléfono. Si desea espacio en SD, puede, por ejemplo, ejecutar un método como este (recuerde las capacidades):

UInt64 spaceOfMusicLibrary = await GetFreeSpace((await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault());

Tenga en cuenta también que obtener espacio libre del teléfono en caso de que el usuario haya establecido todo lo que se instalará en SD (aplicaciones, música, imágenes) es inútil ya que no podrá usarlo (acceso no autorizado). Simplemente: si tiene acceso a una carpeta, puede obtener su espacio disponible.

¿Alguien sabe cómo acceder al espacio libre disponible en una aplicación universal de Windows Phone 8.1? En una aplicación de Windows Phone 8 (.1) Silverlight podría usar este código:

int availableStorage = IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace;

Pero System.IO.IsolatedStorage no está disponible en una aplicación de Windows (teléfono) 8.1.