1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Update oder Neuinstallation

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von xazen, 20.04.2011.

  1. xazen, 20.04.2011 #1
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Hallo Leute,

    ist es irgendwie möglich herauszufinden, ob die APK über eine komplette Neuinstallation oder als Update installiert wurde?
     
  2. DieGoldeneMitte, 20.04.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Willst Du das in einer eigenen App feststellen oder bei einer "anderen" App wissen?

    Bei der eigenen ist das ganz leicht: Speicher irgendwelche Preferences ab. Wenn es im onCreate() keine Preferences zu laden gibt, war die App neu installiert.
     
  3. xazen, 20.04.2011 #3
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Wie finde ich heraus, ob eine Preference-Datei vorhanden ist ?
    Wird die Date bei einer Deinstallation auch gelöscht ?
     
  4. SeraphimSerapis, 20.04.2011 #4
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    Die Preferences Datei liegt unter /data/data/paketname/ - das wird gelöscht, sofern die App deinstalliert wird.
    Würde also ebenfalls diesen Weg gehen und zB prüfen, ob einfach ein Wert "firstStart" vorhanden ist, und ihn ansonsten mit einem Wert initialisieren.

    Die Datei selbst bzw die Preferences laufen ähnlich wie eine Hash-Map als Key-Value-Pair.
     
  5. xazen, 20.04.2011 #5
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Danke :)

    Edit:
    Habe ich das richtig verstanden?

    Bei dem Code:
    Wenn die vorherige Version "firstStart" noch nie versucht hat auszulesen, gibt es die sowohl bei der neuen Version als auch bei der alten Version nicht. Das heißt ich könnte die beiden Versionen nicht auseinanderhalten. Ich müsste also ein Key benutzen, den ich in der Vorversion schonmal benutzt habe. Wobei das auch nicht klappen würde, wenn bei ein Update die SharedPreferences zurückgesetzt werden. Werden die das ?
     
    Zuletzt bearbeitet: 20.04.2011
  6. xazen, 20.04.2011 #6
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Ich habe es nochmal getestet. Die Vorversion wird bei den wenigsten Usern eine SharedPrefs XML ablegen. Da eine SharedPrefs nur commited wird, wenn ein User die versteckten Features freischaltet.
    Den Packageordner gibt es sofort nach der Installation und bevor die App das erste mal gestartet wird.

    Es bleibt also weiterhin die Fragen, wie ich herausfinden kann, ob eine App alls Update oder als Neuinstallation installiert wurde.
     
  7. swordi, 20.04.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du verstehst es nicht richtig

    du liest einfach beim start der app den wert der preference firstStart aus

    getBoolean("firstStart", true);

    wenn du sofort danach firstStart auf false setzt, wird es nie mehr true sein und hast genau nur beim ersten start true erhalten.

    .edit().setBoolean("firstStart", false).commit();
     
  8. xazen, 20.04.2011 #8
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    so weit habe ich es verstanden. Aber es fehlt noch die Unterscheidung zwischen ein Update oder Neuinstallation.

    Ich erkläre das mal am besten am Beispiel:

    Person A hat die App v1.2 auf dem Smartphone
    Person B hat die App gar nicht auf dem Smartphone

    ich entwickle App v.1.3

    Person A macht ein Update auf v1.3
    Person B installiert v1.3 auf dem Handy.

    Nur Person A bekommt das Pop Up zu sehen.

    Wenn ich es nur so mache, sieht jeder beim ersten Start der App das Pop-Up. Es sollen aber nur die Leute es sehen, die einen Update auf die neue Version gemacht haben.
     
  9. swordi, 20.04.2011 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja dann speicherst du die aktuell geöffnete version in die preferences

    checkst es gegen mit der aktuellen version und siehst dann ob sich die erhöht hat.

    vom prinzip das gleiche
     
  10. xazen, 21.04.2011 #10
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Die aktuelle Version ist schon online und schreibt nur eine Variable in die Preferences, die bei den meisten Usern den Standardwert beibehalten wird. Da dieser nur durch das freischalten von verstecken Features geändert wird.
     
  11. swordi, 21.04.2011 #11
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja und wenn du jetzt ein update machst,

    checkst du deine versionsnummer in den preferences mit der aktuellen version und bemerkst, dass sie nicht übereinstimmt ( da ja noch nicht vorhanden )

    und schon kannst den dialog anzeigen.

    ich check echt nicht wo dein problem ist.
     
  12. xazen, 21.04.2011 #12
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    An welche Stelle müsste ich es mit welchen Befehl machen, um die Versionsnummer (falls vorhanden) auszulesen ? Gibt es dafür einen festgelegten Key ?
     
  13. MichaelS, 21.04.2011 #13
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    also noch mehr vorkauen kann man es doch garnet :D

    beim starten der app prüfst du nach Key "HauMichBlau" wenn es den nicht gibt == Update
    Exestieren garkeine Settings == Neu installation
    Exestiert Key jedoch falscher Value == Update ;)
     
  14. xazen, 21.04.2011 #14
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Der letzte Fall wird bei mir bei den wenigsten vorkommen.

    Meiner Logik nach, kann es nämlich auch eine Neu installation sein, wenn es den Key noch nicht gibt.

    Also verstehe ich es richtig. Ich muss schauen ob es schon eine Settingsdatei gibt. wenn ja, muss ich schauen, ob es es den Key "A" gibt. Wenn nicht ist es ein Update, der beim ersten mal gestartet wird, bzw allgemein ist es der erste Start, (es sei denn ich frage nach ein Key, den ich in der Vorversion schon definiert habe)
    Wenn es die Settingsdatei noch nicht gibt, ist es eine neue Installation.

    Beim mir war das Problem, dass ich nicht wusste, dass ich auch auslesen kann, dass es die Settings-Datei gar nicht gibt.
     

Diese Seite empfehlen