Come posso controllare la quantità di spazio disponibile di una scheda SD montata su un dispositivo Android?

Come posso verificare in modo programmato quanto spazio libero una scheda SD montata su un dispositivo Android?

  • Margine personalizzato del button Android
  • l'articolo richiesto non è disponibile per l'acquisto
  • Eseguire la richiesta http in parallelo con Retrofit 2
  • API di NetHttptransport del client Android e Google non è stata trovata
  • Android- Come posso mostrare la selezione di text in visualizzazione di text?
  • Android AudioRecord quali impostazioni per registrare la chiamata
  • 5 Solutions collect form web for “Come posso controllare la quantità di spazio disponibile di una scheda SD montata su un dispositivo Android?”

    Per get lo spazio "libero" disponibile per la scheda SD esterna per indicare un numero che concorda con il numero di menu Menu-> Impostazioni-> SD e telefono, utilizzare il seguente codice:

    StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); double sdAvailSize = (double)stat.getAvailableBlocks() * (double)stat.getBlockSize(); //One binary gigabyte equals 1,073,741,824 bytes. double gigaAvailable = sdAvailSize / 1073741824; 

    Documentazione pertinente: http://developer.android.com/reference/android/os/StatFs.html

     /** * This class is designed to get available space in external storage of android. * It contains methods which provide you the available space in different units eg * bytes, KB, MB, GB. OR you can get the number of available blocks on external storage. * */ public class AvailableSpaceHandler { //********* //Variables /** * Number of bytes in one KB = 2<sup>10</sup> */ public final static long SIZE_KB = 1024L; /** * Number of bytes in one MB = 2<sup>20</sup> */ public final static long SIZE_MB = SIZE_KB * SIZE_KB; /** * Number of bytes in one GB = 2<sup>30</sup> */ public final static long SIZE_GB = SIZE_KB * SIZE_KB * SIZE_KB; //******** // Methods /** * @return Number of bytes available on external storage */ public static long getExternalAvailableSpaceInBytes() { long availableSpace = -1L; try { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize(); } catch (Exception e) { e.printStackTrace(); } return availableSpace; } /** * @return Number of kilo bytes available on external storage */ public static long getExternalAvailableSpaceInKB(){ return getExternalAvailableSpaceInBytes()/SIZE_KB; } /** * @return Number of Mega bytes available on external storage */ public static long getExternalAvailableSpaceInMB(){ return getExternalAvailableSpaceInBytes()/SIZE_MB; } /** * @return gega bytes of bytes available on external storage */ public static long getExternalAvailableSpaceInGB(){ return getExternalAvailableSpaceInBytes()/SIZE_GB; } /** * @return Total number of available blocks on external storage */ public static long getExternalStorageAvailableBlocks() { long availableBlocks = -1L; try { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); availableBlocks = stat.getAvailableBlocks(); } catch (Exception e) { e.printStackTrace(); } return availableBlocks; } } 

    Ecco un modo più semplice, che è utile dal livello API 9:

     Environment.getExternalStorageDirectory().getUsableSpace(); 

    http://developer.android.com/reference/java/io/File.html#getUsableSpace ()

    Questo codice funziona per me:

     StatFs stat = new StatFs(System.getenv("SECONDARY_STORAGE")); long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks(); long kiloAvailable = bytesAvailable / 1024; // Available space from SD in KB long megaAvailable = bytesAvailable / (1024*1024); // Available space from SD in MB return (int)kiloAvailable; 
     public static float megabytesAvailable(String StrPath) { StatFs stat = new StatFs(StrPath); long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks(); return bytesAvailable / (1024.f * 1024.f); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.