2014-11-01 62 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

相关问题