2010-04-16 10 views
6

¿cómo se puede recuperar el almacenamiento interno de su teléfono desde una aplicación? Encontré memoryinfo, pero parece que devuelve información sobre la cantidad de memoria que están ejecutando actualmente las tareas. Estoy intentando que mi aplicación recupere la cantidad de almacenamiento interno disponible.android teléfono interno de almacenamiento

Respuesta

17

Utilice android.os.Environment para buscar el directorio interno, luego use android.os.StatFs para llamar al sistema Unix statfs. Sin vergüenza stolen de la configuración de la aplicación Android:

File path = Environment.getDataDirectory(); 
StatFs stat = new StatFs(path.getPath()); 
long blockSize = stat.getBlockSize(); 
long availableBlocks = stat.getAvailableBlocks(); 
return Formatter.formatFileSize(this, availableBlocks * blockSize); 
3

que tenía un tiempo difícil tener las obras mineras. Así que me gustaría compartir mi código de trabajo para salvar a algunos chicos en algún momento.
Probado en un dispositivo de 32 GB y dispositivo de 1GB.

// Return size is in Megabytes 
public class DeviceMemory { 

     public static long getInternalStorageSpace() 
     { 
      StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath()); 
      //StatFs statFs = new StatFs("/data"); 
      long total = ((long)statFs.getBlockCount() * (long)statFs.getBlockSize())/1048576; 
      return total; 
     } 

     public static long getInternalFreeSpace() 
     { 
      StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath()); 
      //StatFs statFs = new StatFs("/data"); 
      long free = ((long)statFs.getAvailableBlocks() * (long)statFs.getBlockSize())/1048576; 
      return free; 
     } 

     public static long getInternalUsedSpace() 
     { 
      StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath()); 
      //StatFs statFs = new StatFs("/data"); 
      long total = ((long)statFs.getBlockCount() * (long)statFs.getBlockSize())/1048576; 
      long free = ((long)statFs.getAvailableBlocks() * (long)statFs.getBlockSize())/1048576; 
      long busy = total - free; 
      return busy; 
     } 
} 
Cuestiones relacionadas