Dukungan Base64 untuk level API yang berbeda

Di aplikasi Android saya

membangun.gradle

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

Kode 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
}

Jelas sekali, saya mendapat kesalahan kompilasi saat menggunakan varian Base64 sebelum API 24.

Namun bagaimana saya bisa mendukung semua level API dan menggunakan Base64 seperti sebelum 24, seperti setelahnya?


person Alexey    schedule 22.11.2017    source sumber
comment
Apa pernyataan impor yang Anda gunakan?   -  person Ashish Mathew    schedule 22.11.2017
comment
impor java.util.*   -  person Alexey    schedule 22.11.2017
comment
java.util.Base64 memiliki fungsi decoder, android.util.Base64 memiliki fungsi decode dan ada dari API 8   -  person Ashish Mathew    schedule 22.11.2017


Jawaban (2)


Gunakan android.util.Base64 akan menyelesaikan masalah Anda yang tersedia dari API 8

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

Contoh penggunaan:

Log.i(TAG, "data: " + new String(data));
person Abhishek Singh    schedule 22.11.2017
comment
Jawaban benar !! - person SahdevRajput74; 05.03.2018
comment
kamu yang terbaik!!!! Anda tidak tahu berapa lama saya mencari pertanyaan yang benar!!!!! - person kostas poimenidhs; 27.01.2019

Anda harus menggunakan kelas android.util.Base64. Ini didukung dari API 8,

Fungsi Base64.getDecoder() adalah bagian dari java.util.Base64 dan baru di Java8.

person Ashish Mathew    schedule 22.11.2017