Benutzer-Voreinstellungsdatei vs App-Voreinstellungsdatei

Meine Android-Anwendung hat zwei Arten von Vorlieben:

1) Ich habe Benutzerpräferenzen in res / xml / preferences.xml definiert, damit Benutzer ihre Vorlieben mit einer PreferenceActivity verwalten können.

  • Verzögerte Gruppennachrichten in openfire
  • Fehler: "app_name" wird nicht in af übersetzt
  • Wie man auf ein bestimmtes Element jedes Rasteransichtselements zugreift
  • Wo finden sie Androide Crash Geschichte
  • Android-Datenbindung ObservableList Verhalten Problem
  • AppBarLayout mit FrameLayout-Container als Scrolling-Inhalt funktioniert nicht
  • 2) Ich möchte eine andere Datei für die globalen Konfigurationseinstellungen meiner App definieren.

    Was ist der beste Weg, um meine App-Konfigurationseinstellungen zu verwalten? Soll ich eine andere XML-Datei mit config-Werten erstellen oder sollte ich diese config-Werte in strings.xml angeben? Was ist die beste Vorgehensweise bei der Verwaltung von Konfigurationseinstellungen?

  • Fehler beim Aufblasen der Klasse Fragment - doppelte id / illegalargumentexception?
  • Differenzierung von Debug- und Produktionsaufbau einer Android-App
  • Probleme beim Erstellen mehrerer Tabellen in sqlite
  • Android: TabHost ohne TabActivity
  • ConstraintLayout funktioniert nicht im GUI-Editor Android Studio 3.0 - Canary 4
  • Einfachste Weg, um ein Singleton mit Dagger 2 zu schaffen?
  • 3 Solutions collect form web for “Benutzer-Voreinstellungsdatei vs App-Voreinstellungsdatei”

    Präferenzdateien sind nicht im Projekt /res/xml/defaults.xml

    Sie sind auf dem Gerät in Ihrem Anwendungsordner so etwas gespeichert

     /data/data/com.your.pkg/default.prefs 

    Versuchen Sie nicht, den Dateinamen anzugeben, da Sie einige Probleme mit den Voreinstellungsdateien haben werden, wie dieses OP in dieser Frage hatte: Wie bekomme ich Vorlieben, um in Android zu arbeiten?

     SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(context); 

    Dann musst du wohl abfragen

     preferences.getString('weightPref', null); 

    Viele Anwendungen können eine Möglichkeit bieten, Benutzereinstellungen auf die Einstellungen einer bestimmten Anwendung oder einer Aktivität zu erfassen. Um dies zu unterstützen, bietet Android einen einfachen Satz von APIs.

    Präferenzen sind typischerweise Wertewertpaare. Sie können als "Shared Preferences" über verschiedene Aktivitäten in einer Anwendung gespeichert werden (Notiz, die derzeit nicht über Prozesse freigegeben werden kann). Oder es kann etwas sein, das spezifisch für eine Aktivität gespeichert werden muss.

    1. Gemeinsame Präferenzen: Die gemeinsamen Einstellungen können von allen Komponenten (Aktivitäten, Dienste usw.) von den Anwendungen genutzt werden.

    2. Aktivität behandelt Vorlieben: Diese Vorlieben können nur in der Aktivität verwendet werden und können nicht von anderen Komponenten der Anwendung verwendet werden.

    Gemeinsame Präferenzen:

    Die gemeinsamen getSharedPreferences werden mit Hilfe der Methode getSharedPreferences der Context Klasse verwaltet. Die Voreinstellungen werden in einer Standarddatei (1) gespeichert oder Sie können einen Dateinamen (2) angeben, der verwendet werden soll, um auf die Einstellungen zu verweisen.

    (1) Hier ist, wie Sie die Instanz erhalten, wenn Sie den Dateinamen angeben

     public static final String PREF_FILE_NAME = "PrefFile"; SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

    MODE_PRIVATE ist die Betriebsart für die MODE_PRIVATE . Es ist der Standardmodus und bedeutet, dass die erstellte Datei nur von der aufrufenden Anwendung zugegriffen wird. Andere zwei unterstützte MODE_WORLD_READABLE sind MODE_WORLD_READABLE und MODE_WORLD_WRITEABLE . In MODE_WORLD_READABLE andere Anwendung die erstellte Datei lesen, kann sie aber nicht ändern. Im Falle von MODE_WORLD_WRITEABLE andere Anwendungen auch Schreibberechtigungen für die erstellte Datei.

    (2) Der empfohlene Weg ist, den Standardmodus zu verwenden, ohne den Dateinamen anzugeben

     SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context); 

    Schließlich, sobald Sie die Vorlieben-Instanz haben, hier ist, wie Sie die gespeicherten Werte aus den Einstellungen abrufen können :

      int storedPreference = preferences.getInt("storedInt", 0); 

    Um Werte in der Präferenzdatei zu speichern, muss das SharedPreference.Editor Objekt verwendet werden. Editor ist die verschachtelte Schnittstelle der SharedPreference Klasse.

     SharedPreferences.Editor editor = preferences.edit(); editor.putInt("storedInt", storedPreference); // value to store editor.commit(); 

    Editor unterstützt auch Methoden wie remove() und clear() , um den Präferenzwert aus der Datei zu löschen.

    Aktivitätsvorgaben:

    Die gemeinsamen Einstellungen können von anderen Anwendungskomponenten genutzt werden. Aber wenn Sie nicht brauchen, um die Vorlieben mit anderen Komponenten zu teilen und wollen Aktivitäten privater Präferenzen haben. Sie können das mit Hilfe der Methode getPreferences() der Aktivität machen. Die Methode getPreference verwendet die Methode getSharedPreferences() mit dem Namen der Aktivitätsklasse für den Präferenzdateinamen.

    Im Folgenden ist der Code, um Vorlieben zu bekommen

     SharedPreferences preferences = getPreferences(MODE_PRIVATE); int storedPreference = preferences.getInt("storedInt", 0); 

    Der Code zum Speichern von Werten ist auch der gleiche wie bei gemeinsamen Vorlieben.

     SharedPreferences preferences = getPreference(MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("storedInt", storedPreference); // value to store editor.commit(); 

    Sie können auch andere Methoden wie das Speichern des Aktivitätsstatus in der Datenbank verwenden. Hinweis Android enthält auch ein Paket namens android.preference . Das Paket definiert Klassen zur Implementierung von Anwendungseinstellungen UI.

    Um noch einige Beispiele zu sehen, überprüfe Android's Data Storage Post auf Entwickler Website.

    Nehmen wir an, dass Ihr xml so liest:

     <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:key="gpsOn" android:summaryOff="GPS is Off" android:summaryOn="GPS is On" android:title="GPS State"></CheckBoxPreference> 

    Ich nehme an, Sie verwenden eine PreferenceActivity , um die PreferenceActivity aus Ihrem xml zu laden. Also in deiner Aktivität machst addPreferencesFromResource(R.xml.application_pref);

    Wenn Sie dies tun, werden standardmäßig alle Werte in der standardmäßigen SharedPreference der Anwendung gespeichert. Sie können diese Vorlieben überall aufrufen. Also von einer anderen Aktivität / Service nur tun:

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); boolean value = prefs.getBoolean("gpsOn", false); 

    Und genau so solltest du die Vorlieben des Benutzers im value .

    Wahrscheinlich der beste Weg, um globale Konfigurationsvorgaben für eine App festzulegen, besteht darin, Meta-Datenelemente im Android Manifest zu definieren

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.