javaandroidlocaldatelocaltime

How to fix "Call requires API level 26 (current min is 25) " error in Android


I know this question may be duplicated but I didn't find any answer for my problem, I'm using LocalDateTime in my Android app that requires API 26 and my device's API is 25.

What can I do? Your help will be very appreciated.


Solution

  • You need to use https://github.com/JakeWharton/ThreeTenABP to be able using LocalDateTime with Android API < 26.

    Add the dependencies to your project (please follow the project README):

    implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
    

    Then change your LocalDateTime import from:

    import java.time.LocalDateTime;
    

    to:

    import org.threeten.bp.LocalDateTime;
    

    and please do not forget to call AndroidThreeTen.init(this) in your Application class onCreate method like;

    class MyApplication : Application() {
    
        override fun onCreate() {
            super.onCreate()
            AndroidThreeTen.init(this);
        }
    
    }
    

    Update:

    The library mentioned above is no longer the best way as mentioned in JakeWharton/ThreeTenABP README:

    Attention: Development on this library is winding down. Please consider switching to Android Gradle plugin 4.0, java.time.*, and its core library desugaring feature in the coming months.

    To use LocalDateTime in older API levels, use the desugaring feature from Gradle plugin 4.0: https://developer.android.com/studio/write/java8-support#library-desugaring