Onde as preferências compartilhadas são armazenadas?


147

Onde, em um projeto Eclipse, é possível encontrar um arquivo de preferências compartilhadas?


Estou ciente de que o preferência.xml compartilhada é armazenada nos dados, mas onde é armazenada antes de ser instalada; em formato .smali?
sharath3589

Respostas:


241

SharedPreferences são armazenadas em um arquivo xml na pasta de dados do aplicativo, ou seja,

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

ou as preferências padrão em:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

SharedPreferences incluídas durante o tempo de execução não são armazenadas no projeto Eclipse.

Nota: O acesso /data/data/<package_name>requer privilégios de superusuário


3
O arquivo de preferências padrão compartilhada na verdade seria: /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk 27/05

@inazaruk É realmente o nome completo do pacote, embora eu veja usos mistos de /<package>_preferences.xmle /<package>.xmlem dispositivos. Talvez isso depende do nível da API do aplicativo?
Aleadam 27/05

1
Observe que eu estava analisando as preferências compartilhadas padrão . Parece que o nome do arquivo sempre foi o mesmo para eles. Veja commit inicial para PreferenceManager.java, getDefaultSharedPreferencesfunção aqui: android.git.kernel.org/?p=platform/frameworks/… . E também não foi alterado na versão mais recente PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk

Alguma maneira de obter o caminho do sistema e não codificá-lo? O ContextImpl.java o implementa na função privada getPreferencesDir, seria útil obtê-lo de alguma forma no tempo de execução.
Pointer Null

Você pode usar o novo arquivo (context.getFilesDir (). GetParent (), "shared_prefs"). Funciona no Nexus 5, não tenho certeza sobre outros fabricantes.
Gswierczynski # 14/15

9

As preferências podem ser definidas no código ou podem ser encontradas em res / xml / preferências.xml. Você pode ler mais sobre preferências no site do SDK do Android.


4
Você precisa criá-lo - desde que tenha criado um projeto Android, você pode clicar com o botão direito do mouse no diretório "res" e adicionar uma nova pasta chamada 'xml'. Outras pastas "especiais" são anim, drawable, layout, menu, raw e valores.
JasCav

6

Só para poupar algum tempo ...

No meu Galaxy S v.2.3.3, as Preferências compartilhadas não são armazenadas em:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

mas agora estão localizados em: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Eu acredito que eles mudaram isso em 2.3


1
É o mesmo em 2.2? Não consigo encontrar / arquivo de dados em qualquer lugar do meu projeto, seja no eclipse ou no local do projeto.
Pramod

@pramod não está no eclipse - este é o caminho na estrutura real do arquivo do dispositivo.
Richard Le Mesurier

@Pramod vê-lo em vista explorador de arquivos e não em/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/não existe no meu dispositivo JB
rekire

6

Eu apenas tentei encontrar o caminho de preferências compartilhadas abaixo desta maneira.

File f = getDatabasePath("MyPrefsFile.xml");

if (f != null)
    Log.i("TAG", f.getAbsolutePath());

5

Os dados são armazenados no dispositivo, na área de dados privados do seu aplicativo. Não está em um projeto Eclipse.


3

Preferências compartilhadas são os pares de chave / valor que podemos armazenar. Eles são do tipo interno de armazenamento, o que significa que não precisamos criar um banco de dados externo para armazená-lo. Para vê-lo, 1) Vá para Exibir na barra de menus. Selecione Tool Windows. 2) Clique no Device File Explorer. 3) O Device File Explorer é aberto no lado direito. 4) Encontre a pasta de dados e clique nela. 5) Na pasta de dados, você pode selecionar outra pasta de dados. 6) Tente procurar o nome do seu pacote nesta pasta de dados. Ex: com.example.com 7) Clique em shared_prefs e abra o arquivo .xml.

Espero que isto ajude!


1

Use a http://facebook.github.io/stetho/ library para acessar o armazenamento local do seu aplicativo com as ferramentas de inspeção do Chrome. Você pode encontrar o arquivo sharedPreference em Armazenamento local -> <nome do pacote do seu aplicativo>

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.