2015-02-06 2 views
-2

enter image description here 내 장치의 (내부 및 외부) 저장소의 크기를 무료로 가져 가고 싶습니다. 나는 휴대 전화 저장 공간을 얻을 수 내부 및 SD 카드 저장을 얻을 수 있지만 나는 내부 저장, SD 카드, 휴대 전화 저장 공간, enter image description here : 내가 좋아하는 장치에 저장을 다음했다. 도와주세요.안드로이드 각 저장소에 얼마나 많은 여유 공간이 있습니까

+1

내부 저장소는 휴대 전화 저장소입니다. 또한 ... 이것은 원격 프로그래밍과 관련이 없습니다. –

+0

사실 휴대 전화 보관함은 두 부분으로 나뉩니다 : 내 마이크로 맥스 장치의 내부 및 전화 보관함. –

+0

휴대 전화가 SD 카드를 지원하지 않는다고 생각합니다 ...? 이 경우 ... 아마도 ... "전화 저장 장치"라고 부르는 다른 저장소가 SD 카드로 탑재됩니다. –

답변

1

this question을 참조하면 내부 저장 공간과 SD 카드 여유 공간을 모두 확보 할 수 있습니다.

편집 :

public long freeMemory() { 
    StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath()); 
    long free = (statFs.getAvailableBlocks() * statFs.getBlockSize()); 
    return free; 
} 

이 좋아하는 질문을 참조 사람이 읽을 수있는 형식 (MB, GB 등)로 변환하려면 다음 링크 된 질문에서.

일반적으로 (중국어 폰 어쨌든) 내부 저장소는 앱과 앱 데이터 전용으로 두 부분으로 나뉘며 다른 하나는 사진, 미디어 등을 위해 SD 카드로 마운트됩니다. 일부 휴대 전화에는 당신이 접근 할 수있는 SD 카드 슬롯.

+0

귀하의 링크에 따르면, 그것은 내가 알고 싶은 정답을주지 않습니다. –

+0

업데이트 된 답변보기 – JonasCz

0
public static long getAvailableStorage() { 
     File path = StorageUtils.getCacheDirectory(ApplicationController.getInstance(), true); 
     long blockSize = 0; 
     long availableBlocks = 0; 
     StatFs stat = new StatFs(path.getPath()); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { 
      blockSize = stat.getBlockSizeLong(); 
      availableBlocks = stat.getAvailableBlocksLong(); 
     } else { 
      blockSize = stat.getBlockSize(); 
      availableBlocks = stat.getAvailableBlocks(); 
     } 
     return availableBlocks * blockSize; 
    } 

public static File getCacheDirectory(Context context, 
     boolean preferExternal) { 
    File appCacheDir = null; 
    String externalStorageState; 
    try { 
     externalStorageState = Environment.getExternalStorageState(); 
    } catch (NullPointerException e) { // (sh)it happens (Issue #660) 
     externalStorageState = ""; 
    } 
    if (preferExternal && MEDIA_MOUNTED.equals(externalStorageState) 
     && hasExternalStoragePermission(context)) { 
     appCacheDir = getExternalCacheDir(context); 
    } 
    if (appCacheDir == null) { 
     appCacheDir = context.getCacheDir(); 
    } 
    if (appCacheDir == null) { 
     String cacheDirPath = "/data/data/" + context.getPackageName() 
      + "/"+DOWNLOAD_SUB_DIRECTORY+"/"; 

     appCacheDir = new File(cacheDirPath); 
    } 
    return appCacheDir; 
    } 

private static File getExternalCacheDir(Context context) { 
    File dataDir = new File(new File(
     Environment.getExternalStorageDirectory(), "Android"), "data"); 
    File appCacheDir = new File(
     new File(dataDir, context.getPackageName()), DOWNLOAD_SUB_DIRECTORY); 
    if (!appCacheDir.exists()) { 
     if (!appCacheDir.mkdirs()) { 
     L.w("Unable to create external cache directory"); 
     return null; 
     } 
     try { 
     new File(appCacheDir, ".nomedia").createNewFile(); 
     } catch (IOException e) { 

     } 
    } 
    return appCacheDir; 
    } 
관련 문제