Android SharedPreferences wenn App auf externem Speicher klappt nicht

insidERR

Mitglied
Hallo zusammen,
ich habe ein Android 11 Gerät mit recht wenig internem Speicher.
Jetzt habe ich da eine MicroSD verbaut und im System ausgewählt, dass dieser als interne Speichererweiterung dienen soll.
Das funzt wie gewollt.
Wenn ich jetzt meine App über Drive installier, wird sie automatisch auf der MicroSD installiert. Das passt noch.
Wenn ich die App nun starte und benutze, soll sie einige Einstellungen speichern und bei Programmstart wieder auslesen.
Genau damit hat die App anscheinend ein Problem. Es wird einfach nichts gespeichert.
Ich nutze folgenden Code für Speichern und Auslesen:
Java:
    /**
     * Einstellungen speichern
     * @param xSetting Speicherschlüssel
     * @param xString zu speichernder Wert
     */
    public static void SaveSettings(String xSetting, String xString, Context ctx){
        SharedPreferences sharedPreferences = ctx.getSharedPreferences("MySharedPref",MODE_PRIVATE);
        SharedPreferences.Editor myEdit = sharedPreferences.edit();
        myEdit.putString(xSetting, xString);
        myEdit.apply();
    }

    /**
     * Einstellungen auslesen
     * @param xSetting Speicherschlüssel
     * @param xDefault Default
     * @return String
     */
    public static String GetSettings(String xSetting, String xDefault, Context ctx){
        SharedPreferences sh = ctx.getSharedPreferences("MySharedPref", MODE_PRIVATE);
        return sh.getString(xSetting, xDefault);
    }

Wenn ich die App auf den internen Speicher verschiebe, klappt alles wie gewollt.
Unter Appeigenschaften (installierte App), Speicher sieht man normalerweise wieviel Platz die App selbst und der Cache verwendet.
Bei der auf externem Speicher installierten App, ist der Wert bei Cache und Nutzerdaten immer 0.

Unter Manifest habe ich bereits folgendes eingetragen und der App die Berechtigung verpasst.
Java:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Hat jemand ne Idee?
 

Neue Themen


Oben