Поддержка Base64 для разных уровней API

В моем приложении для Android

build.gradle

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 27
        ...
        }
    ....
}

Код Котлина

val data = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    Base64.getDecoder().decode(str)
} else {
    Base64.decode(str, Base64.DEFAULT) // Unresolved reference: decode
}

Очевидно, что я получил ошибку компиляции при использовании Base64 до API 24.

Но как я могу поддерживать все уровни API и использовать Base64 до 24, как после?

Ответ 1

Использование android.util.Base64 решит вашу проблему с помощью API 8

data = android.util.Base64.decode(str, android.util.Base64.DEFAULT);

Пример использования:

Log.i(TAG, "data: " + new String(data));

Ответ 2

Вы должны использовать класс android.util.Base64. Он поддерживается API 8,

Функция Base64.getDecoder() является частью java.util.Base64 и новой в Java8.