Будут ли обновленные методы Android API 31 работать на более низком уровне API?

Рейтинг: 0Ответов: 1Опубликовано: 06.06.2023

К примеру есть SmsManager.getDefault(), который устарел в API 31+, вместо него есть Context.getSystemService(SmsManager.class).

Будет ли это работать на Android 5.0 или же функционал доступен от Android 9 и выше?

Ответы

▲ 1Принят

Метод SmsManager.getDefault() появился в API 4 (Android 1.6) и помечен устаревшим в API 31 (Android 12). В документации написано, что вместо него лучше использовать Context.getSystemService(SmsManager.class), который доступен с API 23 (Android 6).

По-хорошему, если вы делаете приложение для Android 5 и выше, то вы можете использовать старый способ для Android 5 и новый способ для Android 6 и выше:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    // новый способ для Android 6 и выше
    smsManager = context.getSystemService(SmsManager::class.java)
} else {
    // старый способ для Android 5
    @Suppress("DEPRECATION")
    smsManager = SmsManager.getDefault()
}

Вы можете проигнорировать новый способ и сделать все по-старому, но в какой-то момент в новых версиях Андроида старый способ перестанет работать, тогда вам все равно придется реализовывать функциональность по-новому.

Рекомендую подготовиться к изменениям заранее и реализовать функциональность двумя способами, чтобы не пришлось делать наспех в будущем, когда что-то внезапно перестанет работать.