2014-11-01 33 views
0

我想保存一個首選項,以便我可以從我的應用程序中的所有類訪問它。但它不應該從我的應用程序外部訪問,因爲它將包含用戶登錄數據。Android私人保存到我的應用程序,但可從所有類訪問

在Android文檔中,我的理解是MODE_PRIVATE應該這樣做。但是如果我使用MODE_PRIVATE,我只能從創建它的類中訪問首選項。

Class1.java:

.... 
SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
SharedPreferences.Editor editPrefs = prefs.edit(); 
editPrefs.putString("myPref", "myValue"); 
editPrefs.commit(); 
... 

Class2.java:

... 
SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String myString = prefs.getString("myPref", " "); 
... 

如果我在那裏我創建它的類中調用getString,然後返回myValue(即使關閉應用程序,而不必再次放置)。

如果我在同一個應用程序的另一個類中調用getString,則它返回「」。

謝謝!

+0

因爲** **語境事項。使用類似這樣的方法:'最後的SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);'爲** ctx **傳遞相同的上下文(可能通過'getApplicationContext()'找到)。 – 2014-11-01 12:52:02

回答

0

試試這個:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

有關文檔見:http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences(android.content.Context)

+0

謝謝!這種方式對我的應用是否是私有的,或者如果有人知道使用的上下文,它是否可訪問? – jemandanders 2014-11-01 13:08:44

+0

我不能這麼說,但我建議您不要使用SharedPreferences來保存登錄數據,因爲擁有根設備的每個人都可以看到SharedPreferences的內容。嘗試將數據保存到二進制文件中,請參閱:http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String,int) – rickyalbert 2014-11-01 13:23:57

+0

謝謝,但不是binaray文件也可以在根用戶設備上訪問嗎? – jemandanders 2014-11-02 12:33:00

相關問題