Как узнать размер внутренней памяти в android?

Это мой код,

private String memSize(String path){
    StatFs stat = new StatFs(path);
    long blockSize = stat.getBlockSize();
    long availableBlocks = stat.getAvailableBlocks();
    long freeBlocks = stat.getFreeBlocks();
    long countBlocks = stat.getBlockCount();
    String fileSize = Formatter.formatFileSize(this, availableBlocks * blockSize);
    String maxSize = Formatter.formatFileSize(this, countBlocks * blockSize);

    String info = path.toString()
                    + "\nblockSize : " + Long.toString(blockSize)
                    + "\navailableBlocks : " + Long.toString(availableBlocks)
                    + "\nfreeBlocks : " + Long.toString(freeBlocks)
                    + "\nreservedBlocks : " + Long.toString(freeBlocks - availableBlocks)
                    + "\ncountBlocks : " + Long.toString(countBlocks)
                    + "\nspace : " + fileSize + " / " + maxSize
                    + "\n\n";
    return info;
}

Я тестирую свою функцию с помощью пути / data и / sdcard , и он работает
Но когда путь равен / (я понимаю, что это корневой путь), это результат.

  • blockSize: 4096
  • availableBlocks: 0
  • freeBlocks: 0
  • reservedBlocks: 0
  • countBlocks: 0
  • пробел: 0.00B / 0.00B

Я думаю, что корневой путь - это область SuperUser. Для доступа может потребоваться разрешение.
Мой телефон уже рутирован. Не могли бы вы показать мне, что мне делать дальше?

Спасибо.

Ссылки

7
задан Community 23 May 2017 в 11:45
поделиться