Base64支持不同的API级别

Ale*_*xey 23 base64 android kotlin

在我的Android应用中

的build.gradle

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 27
        ...
        }
    ....
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

显然,当在API 24之前使用Base64变体时,我遇到了编译错误.

但是我怎样才能支持所有的API级别并像以前一样使用Base64,之后呢?

Abh*_*ngh 67

使用android.util.Base64将解决您从API 8可用的问题

data = android.util.Base64.decode(str, android.util.Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

  • 正确答案 !! (3认同)

nor*_*DEV 14

fun String.toBase64(): String {
    return String(
        android.util.Base64.encode(this.toByteArray(), android.util.Base64.DEFAULT),
        StandardCharsets.UTF_8
    )
}


fun String.fromBase64(): String {
    return String(
        android.util.Base64.decode(this, android.util.Base64.DEFAULT),
        StandardCharsets.UTF_8
    )
}
Run Code Online (Sandbox Code Playgroud)


Ash*_*hew 6

您应该使用android.util.Base64类。它由 API 8 支持,

Base64.getDecoder() 函数是 java.util.Base64 的一部分,是 Java8 中的新函数。