Поддержка 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, так и после?


person Alexey    schedule 22.11.2017    source источник
comment
Какой оператор импорта вы используете?   -  person Ashish Mathew    schedule 22.11.2017
comment
импортировать java.util.*   -  person Alexey    schedule 22.11.2017
comment
java.util.Base64 имеет функцию декодера, android.util.Base64 имеет функцию декодирования и существует из API 8.   -  person Ashish Mathew    schedule 22.11.2017


Ответы (2)


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

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

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

Log.i(TAG, "data: " + new String(data));
person Abhishek Singh    schedule 22.11.2017
comment
Правильный ответ !! - person SahdevRajput74; 05.03.2018
comment
ты лучший!!!! Вы не представляете, сколько времени я ищу правильный вопрос!!!!! - person kostas poimenidhs; 27.01.2019

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

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

person Ashish Mathew    schedule 22.11.2017