web-dev-qa-db-ja.com

さまざまなAPIレベルのBase64サポート

私のAndroid app

build.gradle

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

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
}

API 24より前のBase64バリアントを使用すると、明らかにコンパイルエラーが発生しました。

しかし、どのようにしてすべてのAPIレベルをサポートし、24以前のようにBase64を使用できますか?

20
Alexey

つかいます - Android.util.Base64は、API 8から利用可能な問題を解決します

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

使用例:

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

Android.util.Base64クラスを使用する必要があります。 API 8からサポートされています

Base64.getDecoder()関数はJava.util.Base64の一部であり、Java8で新しく追加されました。

3
Ashish Mathew