2013-05-15 78 views
0

我正在寫一個應用程序,獲得多少磁盤空間留在Android設備上,我使用下面的代碼:Android上的getAvailableBlocks()實際返回什麼?

public int phone_storage_free() 
{ 
    StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath()); 
    int Free = (statFs.getAvailableBlocks() * statFs.getBlockSize())/1048576; 
    return Free; 
} 

它返回35MB,這是一個很小的量,所以我認爲它的量的磁盤空間免費的應用程序本身。於是我寫了一些代碼來下載一個大於35mb的文件,我將這個文件保存到path.getPath()+"/test.avi",並且它成功了。我再次運行了上面的代碼,得到了35mb的相同值。

所以我的問題是,我怎樣才能獲得Android設備上可用的應用程序的內部磁盤空間量,我可以下載到它,它是準確的,我可以使用的東西。

謝謝!

回答

0

我找到了解決方案。使用該代碼:

public long phone_storage_free() 
{   
    long val=0; 
    File path = Environment.getDataDirectory(); 
    StatFs stat = new StatFs(path.getPath()); 
    long blockSize = stat.getBlockSize(); 
    long availableBlocks = stat.getAvailableBlocks(); 
    val=availableBlocks * blockSize; 
    return val; 
} 
相關問題