9

Android Backup Service requires un nome di file per il backup condiviso preferenze:Qual è il nome del file utilizzato dalle preferenze condivise predefinite?

public static final String PREFS = "PrefFile";  
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS); 

E 'chiaro che cosa usare, se il nome del file viene dato durante la creazione delle preferenze come

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

Ma difetto di uso condiviso preferenze:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

Cosa devo passare come valore PREFS a SharedPreferencesBackupHelper?

risposta

13
private static String getDefaultSharedPreferencesName(Context context) { 
    return context.getPackageName() + "_preferences"; 
} 

vedere il tuo nome del pacchetto in AndroidManifest.xml

+0

E 'sicuro usare un valore predefinito '_preferences'? Funzionerà correttamente su tutti i dispositivi Android? –

+0

Non è garantito. Quindi penso che sia meglio usare SP con nome definito – Dmitry

+0

Grazie. C'è qualche metodo per ottenere il nome del file dalle preferenze condivise? –

3

Dal source code, Il PackageName si basa sul contesto che si passa.

private static String getDefaultSharedPreferencesName(Context context) { 
    return context.getPackageName() + "_preferences"; 
} 
+0

Sfortunatamente, il metodo 'getDefaultSharedPreferencesName' è privato. C'è qualche metodo pubblico per farlo? –

+0

Non potresti semplicemente aggiungere questo metodo al tuo codice e usarlo in questo modo? – MrEngineer13

+0

Come ho menzionato nel commento ad un'altra risposta, non sono sicuro che questo sia il modo giusto per codificarlo con hard-key: cosa succederà se Google lo modificherà nella prossima versione di Android? –

-1

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences (questo);

Problemi correlati