web-dev-qa-db-fra.com

Prise en charge de Base64 pour différents niveaux d'API

Dans mon Android

build.gradle

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

code Kotlin

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

Évidemment, j'ai eu une erreur de compilation lors de l'utilisation de la variante Base64 avant l'API 24.

Mais comment puis-je prendre en charge tous les niveaux d'API et utiliser Base64 comme avant 24, comme après?

20
Alexey

Utilisation Android.util.Base64 résoudra votre problème, il est disponible à partir de l'API 8

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

Exemple d'utilisation:

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

Vous devez utiliser la classe Android.util.Base64. Il est pris en charge par l'API 8,

La fonction Base64.getDecoder () fait partie de Java.util.Base64 et est nouvelle dans Java8.

3
Ashish Mathew