Android Zugriff aus unbound Service auf Preferences

Luke_

Mitglied
Grüßt euch,

ich habe ein Problem mit dem Zugriff auf die Preferences meiner App aus dem Service heraus. Es wird ein ungebundener Service erstellt, der vom AlarmManager alle X Minuten ausgeführt wird, um zu prüfen ob auf einem Server Daten vorliegen.

Allerdings brauche ich dafür auch verschiedene Informationen aus meinen Preferences. Auf die diese kann ich über

Java:
SharedPreferences preferences = PreferenceManager
				.getDefaultSharedPreferences(getApplicationContext());

nicht zugreifen, weil der Service in einem anderen Task läuft. Ist ja auch logisch, weil unbound, läuft ja auch wenn die App nicht gestartet ist. Bounded fällt aber raus, weil, wie eben gesagt, der Service auch ohne die App laufen muss.

Kann mir jemand sagen, wie ich im Service auf die Preferences zugreifen kann? Oder gibts Alternativen?
Eine Datenbank wäre aber too much 😉

Gruß luke
 
Die Preferences sind immer an bestimmte Packages gebunden. Du kannst dir allerdings einen Context für das entsprechende Package erzeugen und so auch in einem dritten Package darauf zugreifen, wenn du von vornherein die Preferences darauf ausgelegt hast auch von dritten gelesen werden zu können.

Hier hast du z.B. folgendes Beispiel:
Java:
  Context myContext = createPackageContext("com.example", 
Context.MODE_WORLD_WRITEABLE); 
  SharedPreferences testPrefs = myContext.getSharedPreferences 
("test_prefs", Context.MODE_WORLD_READABLE); 
  boolean valueFromPrefs = testPrefs.getBoolean("test_key", false);

Neben der Möglichkeit gibt's natürlich auch noch Files und die angesprochene DB. Files sind zwar sehr simpel, z.B. über Serialisierung, allerdings hast du Probleme wenn's keine SD-Karte gibt.
 
Danke für deine Antwort, aber es funktioniert doch mit

Java:
SharedPreferences preferences = PreferenceManager
				.getDefaultSharedPreferences(getApplicationContext());

was ich falsch gemacht habe kann ich leider nicht mehr nachvollziehen. Der Service liegt ja im Package der App, von daher brauch ich keinen neuen Context erstellen.

Danke dir nochmal 😉
 

Zurück
Oben