2013-05-15 3 views
0

Я пишу приложение, которое получает, сколько дискового пространство осталось на Android устройства, и я использую следующий код:Что на самом деле возвращает getAvailableBlocks() на Android?

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

возвращает 35MB, который является небольшим количеством, так что я предполагаю, что это сумма свободного места на диске. Итак, я написал код для загрузки файла размером более 35 МБ, я сохранил файл до path.getPath()+"/test.avi", и он преуспел. Я снова запустил вышеуказанный код и получил то же значение 35 МБ.

Итак, мой вопрос: как я могу получить объем внутреннего дискового пространства на устройстве 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; 
} 
Смежные вопросы