2010-04-16 7 views
6

앱에서 휴대 전화 내부 저장 용량을 어떻게 검색 할 수 있습니까? memoryinfo를 찾았지만 현재 실행중인 작업의 메모리 양에 대한 정보를 반환합니다. 내 응용 프로그램에서 내부 전화 저장 용량을 얼마나 가져올 지 찾으려고합니다.Android 내부 저장 용량

답변

17

android.os.Environment을 사용하여 내부 디렉토리를 찾은 다음 android.os.StatFs을 사용하여 유닉스 statfs 시스템 호출을 호출하십시오. 뻔뻔 stolen 안드로이드 설정 앱에서 :

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

난 내 작품 갖는 힘든 시간이 있었다. 그래서 나는 몇몇 사람들을 구하기 위해 작업 코드를 공유하고 싶습니다.
32GB 장치 및 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; 
     } 
}