2010-04-16 12 views
6

Wie können Sie Ihren Telefon internen Speicher von einer App abrufen? Ich habe maintinfo gefunden, aber es scheint, dass Informationen darüber zurückgegeben werden, wie viel Speicher Ihre aktuell ausgeführten Aufgaben haben. Ich versuche, mit meiner App herauszufinden, wie viel interner Telefonspeicher verfügbar ist.Android internen Telefonspeicher

Antwort

17

Verwenden Sie android.os.Environment, um das interne Verzeichnis zu finden, und verwenden Sie dann android.os.StatFs, um den Systemaufruf Unix statfs darauf aufzurufen. Schamlos stolen aus dem Android-Einstellungen App:

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

hatte ich eine harte Zeit mir arbeitet mit. Also möchte ich meinen Arbeitscode teilen, um einige Leute zu retten.
Getestet auf einem 32 GB Gerät und 1 GB Gerät.

// 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; 
     } 
} 
Verwandte Themen