2011-08-15 17 views
13

Chcę uruchomić kod tylko raz po zainstalowaniu aplikacji. Po jego wykonaniu ten konkretny fragment kodu nie powinien być wywoływany ponownie, nawet po aktualizacji.Uruchom kod tylko raz po zainstalowaniu aplikacji na urządzeniu z systemem Android.

+3

Nie powinno to być po prostu częścią instalatora? – Woot4Moo

+0

@ Woot4Moo - Co masz na myśli przez instalatora? Nie jestem tego obeznany (na Androidzie) – MByD

+0

Nie rozwijam się na platformie, ale myślałem, że Google stworzy rozszerzalną platformę dla instalatorów. Podobnie jak installbuilder lub installshield. – Woot4Moo

Odpowiedz

35
  1. Sprawdź, czy logiczna X jest prawdziwe w udostępnionych preferencji
  2. Jeśli nie:
    a. Uruchom specjalny kod
    b. X zapisać jako prawdziwe w udostępnionych preferencji

Na przykład:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
if(!prefs.getBoolean("firstTime", false)) { 
    // run your one time code 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putBoolean("firstTime", true); 
    editor.commit(); 
} 
+1

@Dvvovator - Byłbym wdzięczny za komentarz – MByD

+0

zawsze pomija instrukcję if dla mnie .. jak zdołałeś ją wykonać. czy mógłbyś podzielić się mną ze mną ... dzięki ... – medampudi

+0

@medampudi - Popełniłem błąd, warunek powinien być odwrotny. patrz edycja. – MByD

4

Użyłem wspólną preferencję w przeszłości, ale jeśli chce coś zrobić onInstall można też spojrzeć na zainstalowanie odbiorca. MyInstallReciever narzędzia BroadcastReciever

<receiver 
    android:name="com.MyInstallReciever" 
    android:exported="true"> 
    <intent-filter> 
     <action 
      android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
</receiver> 
+0

"com.android.vending.INSTALL_REFERRER "nie jest bezpiecznym sposobem, ponieważ podczas instalowania aplikacji aplikacja ma status STOP, może nie mogę jej dobrze wyjaśnić, ale przy odrobinie wiedzy na temat" INSTALL_REFERRER "to się dowie. – David

0

ten prosty kod

if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) { 
     /* 
     * your code here 
     */ 
     getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit(); 
    } 
Powiązane problemy