Ich habe eine Android-Anwendung entwickelt, die mit anderen auf dem Gerät installierten Anwendungen über eine gemeinsame Vorgabedatei interagiert.
Diese Datei wurde als MODE.WORLD_READABLE erstellt und jede installierte Anwendung hat ihre eigene Datei mit einem gemeinsamen definierten Namen und einer gemeinsamen Eigenschaft (was ändert sich der Wert für diese spezifische Eigenschaft).
Zum Beispiel sollten AppA und AppB jeweils eine gemeinsam genutzte Datei namens "app_shared_file.xml" mit einer Eigenschaft "property_shared_file" haben.
Von meiner Anwendung möchte ich zuerst auf diese Datei zugreifen und diesen Eigenschaftswert lesen, und abhängig von diesem Ergebnis möchte ich meinen erstellen / aktualisieren.
Trotzdem habe ich einige Probleme damit. Auf der Android-Dokumentation sehe ich das:
Abrufen und Halten des Inhalts der Voreinstellungsdatei 'name', Rückgabe einer SharedPreferences, durch die Sie abrufen können und Ändere seine Werte. Nur eine Instanz des SharedPreferences-Objekts wird an alle Anrufer mit demselben Namen zurückgegeben , was bedeutet, dass sie sehen werden die Bearbeitung der anderen, sobald sie gemacht sind.
Nach dem Lesen der anderen freigegebenen Voreinstellungsdatei der Anwendung, wenn ich versuche, mein System zu erstellen / zu aktualisieren, anstatt mein Programm zu bearbeiten, verwende ich das, das ich vorher gelesen habe. Wenn ich im Gegenteil anfange, indem ich meinen aktualisiere und die andere App später lese - anstatt den anderen zu lesen, ist derjenige, auf den zugegriffen wird, mein eigener.
Irgendwelche Gedanken?
Der Code, den ich zum Lesen der gemeinsamen Präferenz verwende, ist [wobei Paketname die andere App ist pckg]:
%Vor%Der Code, den ich zum Schreiben in die App shared pref verwende, ist:
%Vor%Vielen Dank im Voraus.
SharedPreferences werden lokal im Paketnamen Ihrer Anwendung gespeichert. Von was? klingt wie, Sie haben zwei völlig separate Apps mit unterschiedlichen Paketnamen. Dies bedeutet, dass Sie anstatt zwei Dateien mit demselben Namen erstellen, die in verschiedenen Ordnern gespeichert sind. Damit verschiedene Aktivitäten aus den gleichen SharedPreferences
-Dateien lesen können, müssen sie unter demselben Paketnamen wie in der AndroidManifest
-Datei definiert sein.
Die andere Option, da Sie den Paketnamen der anderen Anwendungen kennen (nehme ich an), ist die Haupt-App zu wählen, die sie erstellt und behandelt. Dann lesen Sie direkt aus der Datei selbst mit dem direkten URI. Da Sie die Berechtigungen auf MODE_WORLD_READABLE
festlegen, sollte das System dies ermöglichen. Es kann jedoch dazu führen, dass Sie nicht mehr auf den Ordner zugreifen können. Ich habe es persönlich noch nie versucht.
Ich glaube, ich habe die Antwort gefunden, nach der Sie suchen. >
Tags und Links android sharedpreferences