2011-06-07 39 views
1

我有一个应用程序,其中有一个用户登录到web服务(用户名+密码)。我需要在某处存储用户的用户名和密码以自动登录(否则每次都必须输入用户名和密码)。SharedPreferences是否无法被其他应用程序访问?

我已经存储在SharedPreferences的用户名+密码,就像这样:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
Editor editor = prefs.edit(); 
editor.put("username", "the username"); 
editor.put("password", "the password"); 
editor.commit(); 

如果我理解正确的话,该共享首选项的实际文件写入到从其他第三方应用程序无法访问,是否正确?因此,可以在这里存储用户名和密码吗?

如果我将设备连接到DDMS,我看不到共享的prefs文件(好)。如果我使用模拟器,我可以看到它们。

感谢

回答

4

他们一般不应由其他应用程序访问,但有根的设备上,他们可以很容易地访问。

您可能需要encrypt/decrypt字符串作为您的商店并加载它们。

+0

谢谢 - 我似乎无法在文档中找到任何说只能通过您的应用程序访问的文档(在无根的手机上)。你见过类似的东西吗? – user291701 2011-06-07 15:47:19

+0

+1,以便更快地输入:) – Aleadam 2011-06-07 15:47:32

+1

@user获取SharedPreferences实例(默认或任何自定义实例),您需要Activity上下文,而任何其他应用程序都无法访问该上下文。 – Aleadam 2011-06-07 15:53:25

2

这是正确的。尽管如此,该文件是一个普通的xml文件,可以通过固定电话中的任何文件浏览器访问,因此无论如何您都应该对数据进行加密。永远不要认为该应用程序不会用于固定电话。即使用户不会这样做,手机也可能会丢失/被盗并植根于提取信息。

为了回答您的评论的问题:

要获得SharedPreferences实例(无论是默认或任何自定义的),你需要的活动范围内,这是任何其他应用程序无法访问。

+0

+1我不认为这是更快的打字,你只是输入更多;) – 2011-06-07 16:05:26

相关问题