Android獲取可用記憶體(系統,sd卡,u盤)
阿新 • • 發佈:2019-02-01
/**
*通過反射獲取不同儲存卡的路徑,主要是用來獲取外掛sd卡路徑,內建sd卡路徑可通過Environment類的方法獲得
*/
public static boolean hasEnoughStorage(Context context) {
//
StorageManager storageManager = (StorageManager) context.getSystemService
(context.STORAGE_SERVICE);
boolean hasEnoughStorage = false;
try {
String[] paths = (String[]) storageManager.getClass
().getMethod("getVolumePaths").invoke(storageManager);
for (String s : paths) {
StatFs statFs = new StatFs(s);
//得到分割槽大小
long blockSize = statFs.getBlockSize();
//得到可用分割槽數
long availableBlocks = statFs.getAvailableBlocks();
//可用分割槽大小,單位kb
long availableStorage = (blockSize * availableBlocks) / 1024;//kb
if (availableStorage > 100) {
hasEnoughStorage = true;
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return hasEnoughStorage;
}