Я разрабатываю приложение файлового менеджера в Котлине, и мне нужно получить общий размер внутреннего хранилища, включая пространство, занятое системой.
val stat = StatFs(path) // path = "/storage/emulated/0"
val totalBytes = stat.totalBytes
< /code>
Этот метод работает правильно для получения общего размера SD -карты. Однако при использовании для внутренней хранилища он не включает пространство, используемое системой, и возвращает более низкое значение, чем фактический размер: < /p>
Log.d("totalBytes", totalBytes.toString()) // Returns 109799354368
< /code>
Добавление вставленного системой пространства в возвращаемое значение дает правильный общий размер внутреннего хранилища. src = "https://i.sstatic.net/h3tipbuo.jpg"/>
Я также исследовал потенциальные решения и обнаружил два основных подхода:
[list]
[*] Использование команды DF в Linux (на котором основан Android). Тем не менее, я понимаю, что этот метод имеет ограничения, риски, и, как правило, лучше использовать официальные API Android. Этот метод требует разрешения package_usage_stats, которое является чувствительным разрешением. Это не запрашивается с помощью стандартных диалогов разрешений на системную систему (یا разрешение на выполнение выполнения یا Типичные диалоговые окна системного разрешения), и пользователь должен быть направлен на настройки для его предоставления. Кроме того, приложение «Files By Google», по -видимому, может получить общий размер внутреннего хранилища, не запрашивая это разрешение.
[/list]
Я искал онлайн -экступирование. Как я могу извлечь общий размер внутреннего хранилища, не требуя чувствительных разрешений или, по крайней мере, только с внешними разрешениями хранения (READ_EXTERNAL_STORAGE
Я разрабатываю приложение файлового менеджера в Котлине, и мне нужно получить общий размер внутреннего хранилища, включая пространство, занятое системой.[code]val stat = StatFs(path) // path = "/storage/emulated/0" val totalBytes = stat.totalBytes < /code> Этот метод работает правильно для получения общего размера SD -карты. Однако при использовании для внутренней хранилища он не включает пространство, используемое системой, и возвращает более низкое значение, чем фактический размер: < /p> Log.d("totalBytes", totalBytes.toString()) // Returns 109799354368 < /code> Добавление вставленного системой пространства в возвращаемое значение дает правильный общий размер внутреннего хранилища. src = "https://i.sstatic.net/h3tipbuo.jpg"/> Я также исследовал потенциальные решения и обнаружил два основных подхода: [list] [*] Использование команды DF в Linux (на котором основан Android). Тем не менее, я понимаю, что этот метод имеет ограничения, риски, и, как правило, лучше использовать официальные API Android. Этот метод требует разрешения package_usage_stats, которое является чувствительным разрешением. Это не запрашивается с помощью стандартных диалогов разрешений на системную систему (یا разрешение на выполнение выполнения یا Типичные диалоговые окна системного разрешения), и пользователь должен быть направлен на настройки для его предоставления. Кроме того, приложение «Files By Google», по -видимому, может получить общий размер внутреннего хранилища, не запрашивая это разрешение.
[/list] Я искал онлайн -экступирование. Как я могу извлечь общий размер внутреннего хранилища, не требуя чувствительных разрешений или, по крайней мере, только с внешними разрешениями хранения (READ_EXTERNAL_STORAGE[/code] или Manage_external_storage )?