Context.getExternalFilesDir() i Android < 2.2?

Diskussion i 'Frågor, support och diskussion' startad av marka971, 25 aug 2010.

  1. marka971

    marka971 Youth Droid Medlem

    Blev medlem:
    4 sept 2009
    Inlägg:
    178
    Mottagna gillanden:
    6

    MINA ENHETER

    Hej,

    Jag skulle vilja kunna använda metoden getExternalFilesDir() i som finns i klassen Context om användaren kör Android 2.2+, och göra något annat metod om han/hon kör Android <2.2. Går det att få till? Metoden finns ju inte förrän i 2.2...

    /Markus
     
  2. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Jo då, visst är det möjligt, vad du behöver göra är att kolla SDK versionen på telefonen appen körs på och välja metod utefter det.

    Kod:
    
    if(Build.VERSION.SDK_INT > 7){
    
    Anropa din wrapper runt getExternalFilesDir();
    
    }
    else{
    blablabla;
    }
    
    

    Notera:
    Du måste sätta build target till SDK level 8 för att inte få syntax error i koden, programmet kommer fortfarande vara körbart på äldre versioner även om du bygger för lvl 8 om du inte använder methods som introducerats senare...

    getExternalFilesDir() är en sådan och du måste därför skriva en wrapper runt den för att lura Dalvik VM lite... annars kommer du få Force Close (verify error) om du försöker använda den metoden direkt i din activity.

    Så exempelvis skapar du en klass med namn: CompatibilityWrapperLvl8 som ser ut såhär:

    Kod:
    
    public static class CompatibilityWrapperLev8{
    
    public static File getExternalFilesDir(Context context, String name){
    		
    		return context.getExternalFilesDir(name);
    	
    	}
    
    }
    
    

    Och i koden jag postade fört anropar du din wrapper klass istället för att anropa den methoden direkt...
     
  3. marka971

    marka971 Youth Droid Medlem

    Blev medlem:
    4 sept 2009
    Inlägg:
    178
    Mottagna gillanden:
    6

    MINA ENHETER

    coolt, detta verkar ju funka. jag har satt <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8" /> i manifestet och bygger projektet med android 2.2. kommer appen vara synlig på market för android 1.6 och uppåt då? när jag vill köra på emulator så föreslår den bara de emulatorerna som kör android 2.2....

    /markus
     
  4. marka971

    marka971 Youth Droid Medlem

    Blev medlem:
    4 sept 2009
    Inlägg:
    178
    Mottagna gillanden:
    6

    MINA ENHETER