1. 程式人生 > >獲取手機內建儲存和外掛sdcard儲存路徑和可用空間以及總空間大小的方式

獲取手機內建儲存和外掛sdcard儲存路徑和可用空間以及總空間大小的方式

在網上找了好多資料都是執行“執行mount命令,獲取日誌,並進行篩選” 其實真正做起來還要根據廠家的手機做不同的篩選條件,太過於麻煩。

一種簡單帥氣的獲取方法如下

下面的getExternalSDRoot()<span style="font-family: Arial, Helvetica, sans-serif;">獲取手機外接SD卡的根目錄</span>

/**
	 * 手機內建儲存根目錄
	 * @return
	 */
	public static String getSDRoot() {
		
		return Environment.getExternalStorageDirectory().getAbsolutePath();
	}
	
	/**
	 * 獲取手機外接SD卡的根目錄
	 * 
	 * @return
	 */
	public static String getExternalSDRoot() {
		
		Map<String, String> evn = System.getenv();
		
		return evn.get("SECONDARY_STORAGE");
	}

	
	/**
	 * 檢查是否有手機內建儲存
	 * 
	 * @return
	 */
	public static boolean checkSaveLocationExists() {
		String sDCardStatus = Environment.getExternalStorageState();
		boolean status;
		if (sDCardStatus.equals(Environment.MEDIA_MOUNTED)) {
			status = true;
		} else
			status = false;
		return status;
	}
	
	/**
	 * 檢查是否安裝外接的SD卡
	 * 
	 * @return
	 */
	public static boolean checkExternalSDExists() {
		
		Map<String, String> evn = System.getenv();
		return evn.containsKey("SECONDARY_STORAGE");
	}

	/**
	 * 獲取該路徑下可用空間   單位G
	 * @return
	 */
	public static float getUsSize(String path){
		StatFs sf = new StatFs(path); 
       return (sf.getAvailableBlocks() * sf.getBlockSize())/1024f/1024f/1024f;
		
		
	}
	
	/**
	 * 獲取該路徑下總空間 單位G
	 * @return
	 */
	public static float getAllSize(String path){
		StatFs sf = new StatFs(path); 
	       return (sf.getBlockCount() * sf.getBlockSize())/1024f/1024f/1024f;	
	}