2011-06-07 73 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

相關問題