2013-05-15 67 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; 
} 
相关问题