Update oder Neuinstallation

X

xazen

Ambitioniertes Mitglied
0
Hallo Leute,

ist es irgendwie möglich herauszufinden, ob die APK über eine komplette Neuinstallation oder als Update installiert wurde?
 
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.
 
Wie finde ich heraus, ob eine Preference-Datei vorhanden ist ?
Wird die Date bei einer Deinstallation auch gelöscht ?
 
xazen schrieb:
Wie finde ich heraus, ob eine Preference-Datei vorhanden ist ?
Wird die Date bei einer Deinstallation auch gelöscht ?

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.
 
Danke :)

Edit:
Habe ich das richtig verstanden?

Bei dem Code:
PreferenceManager.getDefaultSharedPreferences(this).getBoolean("firstStart","true");

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:
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.
 
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();
 
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.
 
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
 
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.
 
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.
 
An welche Stelle müsste ich es mit welchen Befehl machen, um die Versionsnummer (falls vorhanden) auszulesen ? Gibt es dafür einen festgelegten Key ?
 
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 ;)
 
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.
 

Ähnliche Themen

J
  • Juleru
Antworten
8
Aufrufe
497
Juleru
J
A
Antworten
1
Aufrufe
637
swa00
swa00
G
Antworten
5
Aufrufe
871
jogimuc
J
Zurück
Oben Unten