2010-06-07 11 views
4

Est-il possible de charger une classe en fonction de la version du système d'exploitation utilisée par le téléphone? Par exemple: J'ai fait une application qui nécessite 1.6+ Android. Existe-t-il un moyen de charger une classe ou l'autre en fonction du système d'exploitation utilisé par le téléphone? Je demande cela spécifiquement pour les contacts. La base de données a été modifiée de 1.6 à 2.0 et l'ancienne version ne récupère pas les contacts sur le nouveau téléphone OS. Je voudrais toujours garder mes exigences 1.6, mais en même temps j'aimerais que les téléphones 2.0+ accèdent à la partie contact de l'application.Charger la classe en fonction de la version du SDK

Puis-je créer 2 API, en quelque sorte les emballer avec l'application et décider à la volée que je choisis d'importer?

Répondre

7

Oui! Here is a sample project illustrant la technique. Étape 1: Créez une interface ou une classe abstraite décrivant les données que vous essayez d'obtenir dans toutes les versions de l'API. Étape # 2: Créer des implémentations/sous-classes concrètes de la classe interface/abstract, une pour chaque niveau d'API. Étape # 3: Quelque part, détectez celui dont vous avez besoin et utilisez-le. Dans mon exemple, je le fais en regardant la valeur android.os.Build.SDK dans un contexte statique et en créant un singleton de ma classe "bridge".

+0

Ups! Cette réponse est plus complète que la mine! Les crédits vont à vous –

+0

Merci, qui l'a résolu! – Bostjan

3

Vous pouvez vérifier la version du système d'exploitation et le chargement, puis la classe droite avec quelque chose comme ceci:

import android.os.Build.VERSION; 
.... 
... 

if(VERSION.SDK.equals("4")){ //Android 1.6 
//Load an instance of your Class for android 1.6 
} else { 
    //Load an instance of your Class for android > 1.6 
}