รองรับ Base64 สำหรับ API ระดับต่างๆ

ในแอป Android ของฉัน

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
}

แน่นอนว่าฉันได้รับข้อผิดพลาดในการคอมไพล์ เมื่อใช้ตัวแปร 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