獲取Android手機中SD卡存儲容量 獲取剩余空間


SD卡作為手機的擴展存儲設備,在手機中充當硬盤角色,可以讓我們手機存放更多的數據以及多媒體等大體積文件。因此查看SD卡的內存就跟我們查看硬盤的剩余空間一樣,

是我們經常操作的一件事,那么在Android開發中,我們如何能獲取SD卡的內存容量呢?

要操作Sdcard首先要獲得訪問Sdcard的權限,因此在AndroidManifes.xml中添加權限

 

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

 其次,要判斷Sdcard是否存在,存在Sdcard的情況我們才能訪問,因此這里要用if判斷

//得到外部儲存sdcard的狀態
	private String sdcard=Environment.getExternalStorageState();
	//外部儲存sdcard存在的情況
	private String state=Environment.MEDIA_MOUNTED;

 獲取Sdcard的路徑

//獲得路徑
		File file=Environment.getExternalStorageDirectory();
		 statFs=new StatFs(file.getPath());

 獲得Sdcard總容量,我這里封裝成了一個方法

/**
     * SDCard 總容量大小 
     * @return MB
     */
    private long getTotalSize()
    {
        if(sdcard.equals(state))
        {
            //獲得sdcard上 block的總數
            long blockCount=statFs.getBlockCount();
            //獲得sdcard上每個block 的大小
            long blockSize=statFs.getBlockSize();
            //計算標准大小使用:1024,當然使用1000也可以
            long bookTotalSize=blockCount*blockSize/1000/1000;
            return bookTotalSize;
            
        }else
        {
            return -1;
        }
        
    }

Sdcard的剩余大小,這里也封裝成了一個方法

/**
     * 計算Sdcard的剩余大小
     * @return MB
     */
    private long getAvailableSize()
    {
        if(sdcard.equals(state))
        {
            //獲得Sdcard上每個block的size
            long blockSize=statFs.getBlockSize();
            //獲取可供程序使用的Block數量
            long blockavailable=statFs.getAvailableBlocks();
            //計算標准大小使用:1024,當然使用1000也可以
            long blockavailableTotal=blockSize*blockavailable/1000/1000;
            return blockavailableTotal;
        }else
        {
            return -1;
        }
    }

 

有些應用能安裝到SD卡上,有些不能,這其中有一定規則。如何判斷?

       Google 默認 PackageManager 管理安裝包的機制如下:在 AdroidManifest.xml 里面定義安裝位置可以有四種情況:
1. 如果沒有定義安裝位置,表示安裝在手機內存上;
2. android:installLocation = "auto",表示先查看手機內存是否足夠,如果夠就安裝在手機內存上,不夠就安裝在 T 卡上;
3. android:installLocation = "internalOnly",表示安裝在手機內存上;
4. android:installLocation = "preferExternal" ,表示安裝在 T 卡上;

        如果 apk 的 AndroidManifest.xml 里面定義 android:installLocation = "internalOnly",那么無論用戶選擇安裝在什么地方,該apk 都會安裝到手機上,這樣做的好處是避免程序運行錯誤,因為定義android:installLocation = "internalOnly" 的 apk 一般要安裝到手機內存上才能正常運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM