Je ne suis pas nouveau sur Android et je suis bien habitué à la gestion des versions et à la façon de la conditionner, mais lorsque je vois ceci , cela me dérange ...
// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
// Call some material design APIs here
} else {
// Implement this feature without material design
}
Sur tous les appareils pré-Lollipop, cette ligne planterait l’application car le champ Build.VERSION_CODES.Lollipop n’existait pas ... alors pourquoi cela est-il recommandé? solution dans la documentation?
Je me demande vraiment ce qui me manque
Eh bien, vous devez compiler votre projet avec la dernière version du SDK. Vos constantes sont remplacées par les valeurs entières correspondantes lors de la compilation. Quelle que soit la version de Android sur laquelle vous exécutez l’application - les entiers sont les mêmes
Eh bien, dans ce cas, utilisez cette
// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= 21) {
// Call some material design APIs here
} else {
// Implement this feature without material design
}
Build.VERSION_CODES.Lollipop = 21
Essayez celui-ci
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Lollipop_MR1) {
// Marshmallow+
}else{
//below Marshmallow
}
Remarque: Build.VERSION_CODES.Lollipop_MR1 == 22
Build.VERSION_CODES.M==23
Un peu tard pour répondre, mais aujourd’hui, j’ai rencontré le même problème sur Android Studio 3.4.1
La solution de contournement est donc la suivante:
Effectuez la mise à niveau vers le dernier Android SDK.
Et,
Après Marshmallow/Android 6 Build.VERSION_CODES.xxx, les noms complets sont remplacés par les initiales et quelques autres variantes.
Donc, maintenant pour Marshmallow, ce sera: Build.VERSION_CODES.M
Et pour Nougat: Build.VERSION_CODES.N
Etc.