Почему протоколирование StrictMode не выводится на устройство Marshmallow?

Код, вызванный из Application.onCreate():

private fun enableOnStrictMode() {
    StrictMode.setThreadPolicy(
            StrictMode
                    .ThreadPolicy
                    .Builder()
                    .detectAll()
                    .penaltyLog()
                    .build())
    StrictMode.setVmPolicy(
            StrictMode
                    .VmPolicy
                    .Builder()
                    .detectAll()
                    .penaltyLog()
                    .build())
}

Это прекрасно работает на устройстве Android 9.0 Pie и выдает почти десяток нарушений политики, включая нетегированные сетевые запросы и чтение с диска. Но при запуске того же кода на устройстве Marshmallow (Samsung J5 Android 6.0) StrictMode не выводит журналы, даже если кажется разумным предположить, что нарушения политики все еще происходят.

Есть ли что-то в конфигурации StrictMode, которое может привести к отсутствию вывода на Android 6.0 Marshmallow?

1 ответ

Решение

Определенные обнаружения доступны только начиная с более поздних версий API.

Например, API уровня 26 (Android O) добавлен detectUntaggedSockets а также detectUnbufferedIo,

Тем не мение, detectDiskReads должен быть доступен начиная с уровня API 9.

Другие вопросы по тегам